水题
判断素数
因为范围是到16位,所以可以用long long存储
然后判断是否为素数就ok了。
但我提交之后显示10个测试样例通过了9个.......原因是下面标红的部分。
埃氏筛法:若a是合数,则必有不可约数P<=根号a,使p|a。
我是折在这个等号上。
代码如下:
1 #include2 #include 3 typedef long long LL; 4 int Mil(LL n); 5 6 int main() 7 { 8 long long x,y,z; 9 int a;10 while(scanf("%lld",&x)==1){11 y=x;12 if((y%10)==0){13 printf("no\n");14 continue;15 }16 else {17 z=0;18 do{19 a=y%10;20 y/=10;21 if((a!=3)&&(a!=4)&&(a!=7)){22 if(a==6) z=z*10+9;23 else if(a==9) z=z*10+6;24 else z=z*10+a;25 }26 }while((a!=3)&&(a!=4)&&(a!=7)&&(y!=0));27 if((a==3)||(a==4)||(a==7)){28 printf("no\n");29 continue;30 }31 }32 if(Mil(x)&&Mil(z))33 printf("yes\n");34 else printf("no\n");35 }36 return 0;37 }38 int Mil(LL n)39 {40 LL i;41 if(n==1) return 0;42 if(n==2) return 1;43 if(n%2==0) return 0;44 for(i=3;i*i<=n;i+=2){45 if(n%i==0) return 0;46 }47 return 1;48 }