判断是否为素数的程序不知道哪里错了,跑完之后可以输入数字但不显示答案
#include<stdio.h>int main()
{
bool flag=1;
int a;
scanf("%d",&a);
for(int b=2;2<=a/2;b++)
{
if(a%b==0)
{
flag=0;
}
}
if(flag)
{
printf("yes");
}
else
{
printf("no");
}
return 0;
}
求解{:10_266:}
本帖最后由 jackz007 于 2020-12-13 21:56 编辑
这一句:
for(int b=2;2<=a/2;b++)
中间的条件部分:2<=a/2 在整个循环期间始终不变,这就意味着当 a < 4 的时候,无法进入循环,按照事先的逻辑设定,flag = true,没有问题,但是,当 a > 5 的时候,根据这个设定的循环条件,将会进入死循环,楼主所说的出不了结果,恐怕正是这个原因。
下面是帮楼主修改过的代码,供楼主参考
#include<stdio.h>
int main()
{
bool flag = false ;
int a , b ;
scanf("%d" , & a) ;
if(a > 1) {
if(a % 2) { // 除了 2 ,所有的素数都是奇数
for(flag = true , b = 3 ; b * b < a + 1 ; b += 2) { // 除了 2 ,所有的素数都是奇数
if(b < a && ! (a % b)) {
flag = false ;
break ;
}
}
} else if(a == 2) flag = true ; // 偶数中,2 是唯一一个素数
}
if(flag) printf("yes\n") ;
else printf("no\n") ;
} #include <stdio.h>
int main()
{
int flag=1;
int a,b;
scanf("%d",&a);
for(b=2;b<=a/2;b++)
{
if(a%b==0)
{
flag=0;
}
}
if(flag)
{
printf("yes");
}
else
{
printf("no");
}
return 0;
} 看看 jackz007 发表于 2020-12-13 21:19
这一句:
中间的条件部分:2 5 的时候,根据这个设定的循环条件,将会进入死循环,楼主 ...
万分感谢!其实改一个字母也可以解决 for(int b=2;2<=a/2;b++)改成 for(int b=2;b<=a/2;b++) 大佬
页:
[1]