求助
#include<stdio.h>int main()
{
int n,r,i=2;
scanf("%d",&n);
r=0;
while(i<=n/2&&r!=0);
{
if(r!=0) i=i+1;
r=n%i;
}
if(r!=0) printf("是素数");
elseprintf("是个屁");
return 0;
}
为什么只有r=0才能运行 while(i<=n/2&&r!=0);
因为这里有r!=0这一句
如果你的r不等于0那么这个条件就为
false while循环也就不会执行
所以程序就只会执行到
int n,r,i=2;
scanf("%d",&n);
r=0;
这里 小伤口 发表于 2021-9-29 01:08
因为这里有这一句
如果你的r不等于0那么这个条件就为
false while循环也就不会执行
但是while语句不是里面的条件成立,它才能执行吗 夜蚀天 发表于 2021-9-29 15:27
但是while语句不是里面的条件成立,它才能执行吗
对呀,所以你r不等于0条件不成立不执行while循环,程序结束了呀 小伤口 发表于 2021-9-29 19:30
对呀,所以你r不等于0条件不成立不执行while循环,程序结束了呀
但是它可以输出正确答案啊 夜蚀天 发表于 2021-9-29 21:54
但是它可以输出正确答案啊
抱歉哈,我说错了
r!=0
这句是r不等于0的意思
while循环本来是判断输入的数是否为素数
但如果你的r不等于0 while就会永远为真(导致一直会在while循环出不来不能正常运行)
又因为你的 i 初始变量为2
i<=n/2
所以只要你的 n 小于4(也就是你输入小于4)
i<=n/2
这行代码就一直false就不会执行while循环
所以可以正常运行
页:
[1]