-----------------------------------------------------------
-----------------------------------------------------------
p.s.
本人的程式在d705. 判断质数(二)中是AC的
AC (0.3s, 312KB)
附上程式
#include<iostream> #include<stdio.h> #include<math.h> #define maxn 2147483647 using namespace std; int prime[4800],i,i2,isP,t=0;//build a prime number list void BuildPrime(){ prime[0]=2; for(i=3;i<sqrt(maxn);i++){ isP=1; for(i2=0;i2<=t;i2++){ if(i%prime[i2]==0){ isP=0; break; } } if(isP==1){ t++; prime[t]=i; } } } char PrimeCheck(int n){ if(n == 1){ return '1'; } if(n<prime[t]){ isP=0; } else{ isP=1; } for(i=0;i<=t;i++){ if(n<prime[t]){ if(n==prime[i]){ isP=1; break; } } else{ if(n%prime[i]==0){ //printf("%d mod(%d) = 0\n",n,prime[i]); isP=0; break; } //printf("%d mod(%d) = %d\n",n,prime[i],n%prime[i]); } } if(isP==1){ return '0'; } else{ return '1'; } } int main() { int ask; char ans; BuildPrime(); while(~scanf("%d",&ask)){ if(ask == 0){ break; } ans = PrimeCheck(ask); printf("%c\n",ans); } return 0; }