#include <stdio.h>
#include <math.h>
int main()
{
int n,i,flag=0;
int j;
double obj;
scanf("%d",&n);
if(n<=10)
{
for(i=0;i<n;i++)
{
scanf("%lf",&obj) ;
if(obj==1)
{
printf("No\n");
continue;
}
for(j=2;j<=sqrt(obj);j++)
{
if((int)obj%j==0)
{
break;
}
}
if(j==(int)sqrt(obj)+1)
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}
/* !!!值改变了
yaoqiu:
1,个数为正整数,且小于11
2,被判断数挺大的,用double
3,输出Yesor No
1:scanf确定end,用for循环相应次数
2:若为1,2,Yes
若用for循环从2循环到n-1看是否能整除
能就count++
3,根据cou判断yesorno
*/
这道编程题需要注意的有几点:
1,sqrt()的输入输出都为double类型,不要把整型放进去了,说起来math库里面的函数如pow()也是一样,这点下次接触math.h的函数需要注意。
2,承接上点,当有double类型代替int类型表示整数时要活用(int)强制转化。
3,遍历判断时应该尽可能地缩小范围,如这里的使用平方根,当目标值较大的时候可以很好的缩短运行时间。
4,当使用变量值来决定最后的输出时,要注意变量值的重置,否则没有再次的初始化的话,对以0和有为标准的判断会产生影响,(前面有了后面就都有了)。当然理论上可以尝试变化标准。
5,求余操作要求int类型!!!