zyxmm 发表于 2022-8-2 16:45:46

为什么判断素数程序结果只有素数?

#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

zyxmm 发表于 2022-8-2 16:49:20

知道了,应该让flag=1

临时号 发表于 2022-8-2 16:52:49

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;
}

tommyyu 发表于 2022-8-2 17:17:18

临时号 发表于 2022-8-2 16:52
除了你说的还有另一个问题,for循环的条件应该为i

不是i<=ceil(sqrt(a))么

临时号 发表于 2022-8-2 17:21:02

本帖最后由 临时号 于 2022-8-2 17:32 编辑

tommyyu 发表于 2022-8-2 17:17
不是i

不错,你这种方法确实可以提高程序运行的效率

zyxmm 发表于 2022-8-2 19:47:33

临时号 发表于 2022-8-2 16:52
除了你说的还有另一个问题,for循环的条件应该为i

如果2不能整除那a/2也不能,我是这样想的

zyxmm 发表于 2022-8-2 19:50:54

tommyyu 发表于 2022-8-2 17:17
不是i

这个还没学到{:9_229:}

柿子饼同学 发表于 2022-8-2 20:19:21

zyxmm 发表于 2022-8-2 19:50
这个还没学到

这也就是个常识 , 记一下就行
判断能否整除的可以从 2 到 根号n

zyxmm 发表于 2022-8-2 21:03:16

柿子饼同学 发表于 2022-8-2 20:19
这也就是个常识 , 记一下就行
判断能否整除的可以从 2 到 根号n

好的
页: [1]
查看完整版本: 为什么判断素数程序结果只有素数?