8 solutions
-
0
//如何提高判断效率? //p1去掉偶数,用于判断整数是否为素数的除数范围右界只用取到平方根 //p2如果构建一个素数表,假定所有数都为素数标记1,从2开始把2的倍数全部标记为非素数,从3开始将每个3的倍数标记为非素数......当然不包括2,3(这题数据不连续应该用不上这个解法) //p3 sqrt函数返回读入类型是double,整数有可能会被截断有误差,不如i*i<=x #include<stdio.h> int z(int a); int main(void){ int q; scanf("%d",&q); int number; int cnt=0; while(cnt<q){ scanf("%d",&number); cnt++; int ret=z(number); if(ret) printf("Yes\n"); else printf("No\n"); } return 0; } int z(int a){ int i; int ret=1; if((a!=2&&a%2==0)||a==1) ret=0;//不是素数 else{ for(i=2;i*i<=a;i++){ if(a%i==0){ ret=0; break; } } } return ret; }
Information
- ID
- 43
- Time
- 5000ms
- Memory
- 256MiB
- Difficulty
- 7
- Tags
- # Submissions
- 1461
- Accepted
- 302
- Uploaded By