您的位置:首页 > 其它

素数打表 cf 546D

2015-06-08 19:28 435 查看
素数打表代码:

memset(a,0,sizeof a);

for(int i = 2; i<=maxn;i++)

if(!a[i])

{

for(int j = i; j <=maxn;j += i)

a[j] = a[j/i] + 1;

}

题目代码

#include <algorithm>

#include <cstdio>

#include <cstring>

#include <iostream>

using namespace std;

int ans[5000001];

int main(void)

{

int cnt;

cin >> cnt;

for(int i = 2; i<=5000000;i++)//素数打表

{

if(!ans[i])

{

for(int j = i; j <= 5000000; j+=i)

ans[j]=ans[j/i]+1;

}

}

for(int i = 2; i<=5000000;i++)

ans[i]+=ans[i-1];

for(int i = 1; i<=cnt;i++)

{

int s ,e;

scanf("%d%d",&s,&e);

printf("%d\n",ans[s]-ans[e]);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: