|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小甲鱼带你学C带你飞第14课,视频讲解实例的判断一个数是不是素数
#include<stdio.h>
int main ()
{
int i, num;
_Bool flag = 1;
printf("请输入一个数:");
scanf("%d", &num);
for(i = 2;i < num / 2;i++);
{
if(num % i == 0)
{
flag = 0;
}
}
if(flag)
{
printf("这是一个素数!\n");
}
else
{
printf("这不是一个素数!\n");
}
return 0;
}
这是他的源代码。
我的问题是当输入的数是8的时候,在for循环中会运算2,3,4三次,其中运算8 % 3的时候,flag会被置为1,就是这三次运算结果有一次flag应该是1,为什么这不会导致8被判断为这是一个素数?
下面是我自己想的程序,在判断8的时候被认为是一个素数,这当然是不对的,但我想不明白原因,求大神指导一下
#include<stdio.h>
int main ()
{
int i, n;
_Bool flag;
printf("请输入一个数:");
scanf("%d", &n);
for(i = 2;i < n / 2;i++)
{
if(n % i == 0)
{
flag = 0;
}
else
{
flag = 1;
}
}
if(flag)
{
printf("这是一个素数!\n");
}
else
{
printf("这不是一个素数!\n");
}
}
如果有其他不对的地方也请一并指出,拜托了各位大神们!求求你们了,想不通啊想不通
因为你在 for 循环里加了 else...这样一来,flag 就只跟 for 循环里最后一次循环的数有关系。
你说你的 8 会被判为素数,原因是最后一次 for 循环的 i = 3,8%3不等于零,于是flag就被置一了,所以 8 就被判成了素数。
你把 else 那部分去掉就行了
|
|