错误:第二个点一直超时。
改正方法:把原来用的j*j<=a改成j<=sqrt(a),我也不知道为什么。
a=1的特殊情况,能加快这个特定值的出结果的速度。
题目详情 - L1-028 判断素数 (10 分) (pintia.cn)
#include<stdio.h>
#include<math.h>
int main()
{
int n,a;
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d",&a);
if(a==1)//特殊情况
printf("No\n");每出一次结果,就要换行,否则会格式错误
else
{
int j;
for(j=2; j<=sqrt(a); j++)//有点不明白为什么一定要用sqrt函数,用j*j<=a不是一样吗
{
if(a%j==0)
break;
}
if(j>sqrt(a))
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}