为什么判断素数程序结果只有素数?
#include<stdio.h>#include<stdbool.h>
int main()
{
int a;
bool flag;
printf("Please input a number:\n");
scanf("%d",&a);
int i;
for(i=2;i<a/2;i++)
{
if (a%i==0)
{
flag=0;
}
}
if(flag)
{
printf("您输入的数字是素数。");
}
else
{
printf("您输入的数字不是素数。");
}
return 0;
}
编译器是dev 知道了,应该让flag=1
zyxmm 发表于 2022-8-2 16:49
知道了,应该让flag=1
除了你说的还有另一个问题,for循环的条件应该为i<=a/2
#include<stdio.h>
#include<stdbool.h>
int main()
{
int a;
bool flag = 1;
printf("Please input a number: ");
scanf("%d",&a);
int i;
for(i=2;i<=a/2;i++)
{
if (a%i==0)
{
flag=0;
}
}
if(flag)
{
printf("您输入的数字是素数。");
}
else
{
printf("您输入的数字不是素数。");
}
return 0;
} 临时号 发表于 2022-8-2 16:52
除了你说的还有另一个问题,for循环的条件应该为i
不是i<=ceil(sqrt(a))么 本帖最后由 临时号 于 2022-8-2 17:32 编辑
tommyyu 发表于 2022-8-2 17:17
不是i
不错,你这种方法确实可以提高程序运行的效率 临时号 发表于 2022-8-2 16:52
除了你说的还有另一个问题,for循环的条件应该为i
如果2不能整除那a/2也不能,我是这样想的 tommyyu 发表于 2022-8-2 17:17
不是i
这个还没学到{:9_229:} zyxmm 发表于 2022-8-2 19:50
这个还没学到
这也就是个常识 , 记一下就行
判断能否整除的可以从 2 到 根号n 柿子饼同学 发表于 2022-8-2 20:19
这也就是个常识 , 记一下就行
判断能否整除的可以从 2 到 根号n
好的
页:
[1]