

思路:
线性筛质数
#include <cstdio>
#include <iostream>
#define max 1000000
using namespace std;
bool prime[max+1];
int sum[max+1], tmp, a, b;
int main()
{
prime[0]=prime[1]=1;
sum[1]=0;
for(i=2;i<=max;i++)
{
if(!prime[i])
{
for(j=i+i;j<=max;j+=i)
prime[j]=1;
tmp+=i;
}
sum[i]=tmp;
}
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a>b)swap(a, b);
for(i=a;i<=b&&prime[i];i++);
printf("%d",i);
for(i++;i<=b;i++)
if(!prime[i]) printf(" %d",i);
printf("\n%d\n",sum[b]-sum[a-1]);
}
return 0;
}
这篇博客介绍了CSP/NOIP竞赛中入门级别的模拟赛题——质数统计。文章重点讲解了线性筛质数的方法,包括其原理和实现过程,旨在帮助初学者理解并掌握这一算法。

687

被折叠的 条评论
为什么被折叠?



