用筛选法求100以内的素数
程序员文章站
2022-05-11 20:25:54
...
筛选法就是“埃拉托色尼筛法”,方法是在纸上写出1~1000的全部整数,然后逐个判断他们是否为素数,挖掉非素数,剩下的就是素数。
算法思想:
1、挖掉1
2、用下一个未被挖掉的数p除p后面各数,把p的倍数挖掉
3、检查p是否小于√p的整数部分,如果是,则返回2继续执行,否则结束
4、剩下的数就是素数
代码:
#include<cstdio>
#include<math.h>
int main(){
int a[101],n=0;
for(int i=1;i<=100;i++) a[i]=i;
a[1]=0;
for(int i=2;i<(int)sqrt(100);i++){
for(int j=i+1;j<=100;j++){
if(a[i]!=0&&a[j]!=0){
if(a[j]%a[i]==0) a[j]=0;
}
}
}
for(int i=2;i<100;i++){
if(a[i]!=0){
printf("%5d",a[i]);
n++;
}
if(n==10){
printf("\n");
n=0;
}
}
printf("\n");
return 0;
}