【发布时间】:2018-08-06 13:15:53
【问题描述】:
我找不到解决这个问题的好方法; 我需要计算范围效率中的 sphenic 奇数个数,我使用过筛算法,但通常应该有更好的方法来做到这一点。
一个奇数是3个不同的奇质数的乘积。
我已经尝试过了,但它需要很多时间。
char t[200000001];
int dp[200000001];
int main() {
cin.tie(0);
ios_base::sync_with_stdio(false);
for(int i=3;i<200000001;i+=2)
{
if(t[i]==0)
{
for(int j=i;j<200000001;j+=i)
t[j]++;
}
if(t[i]==3 && i%2)
dp[i]=1;
}
for(int i=100;i<200000001;i++)
dp[i]+=dp[i-1];
int test=0;
cin>>test;
for(int tt=1;tt<=test;tt++)
{
int a,b;
cin>>a>>b;
cout<<dp[b]-dp[a-1]<<"\n";
}
}
谢谢你
编辑: 我正在尝试解决这个问题: http://codeforces.com/group/HtnK54FR7R/contest/219854/problem/D
【问题讨论】:
-
我不理解链接的问题陈述中的输出示例。区间 (1, 100) 的答案怎么可能是 0?
-
@גלעדברקן 最小的 sphenic 奇数(或幻数,根据问题)是 3*5*7 = 105,大于 100。
-
@EvilTak 啊,tx :)
标签: algorithm primes number-theory