scanf前面那段至少跑了6秒鐘啊!!
#include <stdio.h>
#include <math.h>
void odd_or_not(int);
int main(){
int test,i,k,j;
int a[43641]={0};
a[0]=2;
a[1]=3;
a[2]=5;
a[3]=7;
for(i=3;i<43641;i++){
j=1;
for(k=0;k<=i;k++){
if((a[i]+j)%a[k]==0){
j++;
k=0;
continue;
}
else{
a[i+1]=a[i]+j;
}
}
}
/*printf("Done!\n");*/
/*for(i=0;i<43641;i++) printf(" %d",a[i]);*/
while(scanf("%d",&test)!=EOF){
for(i=0;i<43641;i++){
if(test%a[i]==0){
printf("非質數\n");
break;
}
else if(i==43640 && test%a[i]!=0){
printf("質數\n");
break;
}
}
}
}
看演算法筆記內的篩法或6n+1法加快求質數的速度
http://www.csie.ntnu.edu.tw/~u91029/Prime.html
http://joujounote.blogspot.tw/2015/07/blog-post.html#more
目前利用建質數表可以解這題
如果有人有更快的方法希望也可以分享一下XD