素数判定,提交后显示错误,不知道哪里有问题。请帮忙看看,谢谢啦!
一、14行的输出函数写错位置了,这样会导致任何一个不是n的因子的数都被判定成功,然后输出yes。你应该在整个循环遍历结束之后,在去做判断看是否输出yes。
二、第13行的break写错了,这样会导致break一定运行,你应该放在if里面。
具体程序见下:
#include<stdio.h>
int main()
{
int n,i,a;
scanf("%d",&n);
if(n==1)printf("No");
a=1;//默认其是一个素数,如果不是a的值为0
for(i=2;i*i<=n;i++)
{
if(n%i==0){
a=0;
printf("No");
break;
}
}
if(a==1){
printf("Yes");
}
return 0;
}
int main()
{
int n,i;
scanf("%d",&n);
for(i=2;i<n;i++)
{
if(n%i==0)
{
printf("No");
break;
}
}
if(i>=n)
printf("Yes");
return 0;
}
逻辑问题,你用相除判断法就必须全部尝试完后才能判断是否为素数
#include<stdio.h>
int main()
{
int n,i,a;
scanf("%d",&n);
if(n==1)printf("No");
a=1;//默认其是一个素数,如果不是a的值为0
for(i=2;i*i<=n;i++)
{
if(n%i==0){
a=0;
printf("No");
break;
}
}
if(a==1){
printf("Yes");
}
return 0;
}