题目描述
注意为避免超时应用[HTML_REMOVED]中的sqrt减少遍历次数
还有最后的判断语句应该放置在内循环之外.在判断一个数是否为质数的内层循环中一旦发现能被整除(即不是质数)就将k设为0并break,紧接着进行输出判断,此时可能还没有完整遍历完所有可能的除数情况.应该在外层循环内,在整个内层循环结束后再根据k的值来判断并输出该数是否为质数。
样例
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int n,x;
cin>>n;
for(int i=1;i<=n;i++)
{
int k=1;//每次判断新的数时,先假设它是质数
cin>>x;
for(int j=2;j<=sqrt(x);j++){
if(x%j==0){
k=0;
break;//不是质数,跳出循环
}
}
if(k==0)cout<<x<<" is not prime"<<endl;
else if(k==1) cout<<x<<" is prime"<<endl;//注意这两句应放置于内循环外
}
return 0;
}