筛选法求素数这个问题已经做过好多次了,可是每次都不会,每次都会忘记上次是怎么做的,这次一定得自己熟悉了解方法,要求自己记住这个方法!!!
筛选法求素数:
#include <stdio.h>
#include <math.h>
int main(){
int n;
int m;
scanf("%d",&n);
while(n--){
int i;
scanf("%d",&m);
int array[1000];
for(i=2;i<=m;i++){ //把所有的数对应的数组元素置为相应的数
array[i]=i;
}
for(i=2;i<=m/2;i++){ //遍历
if(array[i]!=0){ //表示没有遍历过
for(int j=i+i;j<=m;j+=i){ //把那些倍数的去掉
array[j]=0;
}
}
}
for(i=2;i<=m;i++){
if(array[i]!=0)
printf("%d\n",i);
}
}
return 0;
}