#include<iostream> #include<math.h> using namespace std; bool a[1000006]; int main() { memset(a,1,sizeof(a)); for(int i=2;i<=1000;i++)//i<=1000 for(int j=i; j*i<=1000000;j++) //j=i a[i*j] = 0; int n; while(cin>>n&&n) { if(a[n]&&n<=1000000) cout<<"No"<<endl; else { int q=0; for(int i=2;i<=sqrt(n);i++) if(n%i==0&&a[i]&&a[n/i]) {q=1;break;} if(q) cout<<"Yes"<<endl; else cout<<"No"<<endl;//错误NO O写成了大写 } } system("pause"); return 0; } http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2723 半素数 解的方便之处