用筛选法求100以内的素数
- 解释:所谓“筛选法”指的是“埃拉托色尼筛法”,指在一张纸上写上1~1000的全部整数,然后逐个判断他们是否是素数,找出一个非素数,就把它挖掉,最后剩下的就是素数。
- 具体做法如下:
- 先将1挖掉(1不是素数)
- 用2除以它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。
- 用3除以它后面的数,把3的倍数挖掉。
- 分别用4,5……各数作为除数除以后面的这些数。直到全部除完为止。
- 代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
int a[101]={0},i=0,j=0;
for(i=1;i<=100;i++){
a[i]=i;
}
a[1]=0;
for(i=2;i<=sqrt(100);i++){
for(j=i+1;j<=100;j++){
if(a[i]!=0 && a[j]!=0){
if(a[j]%a[i]==0){
a[j]=0;
}
}
}
}
for(i=2;i<=100;i++){
if(a[i]!=0)
printf("%d ",a[i]);
}
return 0;
}