判断质数
当这个数只有两个因子分别是1和本身时就被称为素数也就是质数。
关于代码
int zs(int x)
{
int i;
if(x<2)return 0;
for(i=2;i<=x/i;++i)
if(x%i==0)return 0;
return 1;
}
这一段中的i<=x/i是最好的写法(目前),因为我本来是i*i<=x这种判断但是WA了。
原因看了数据范围就知道了2^30的平方根相乘这必然是会炸的,因为它是要超过这个数字所以会爆。
代码
#include<cstdio>
using namespace std;
const int sz=1e6+1;
int n,i,a[sz],b[sz],x;
int zs(int x)
{
int i;
if(x<2)return 0;
for(i=2;i<=x/i;++i)
if(x%i==0)return 0;
return 1;
}
int main()
{
scanf("%d",&n);
while(n--)scanf("%d",&x),printf("%s\n",zs(x)?"Yes":"No");
return 0;
}