jifeifei 发表于 2022-9-26 20:37:18

S1E15 素数

file:///C:/Users/CC/Desktop/1.png

#include <stdio.h>

int main()
{
        long long i , num;
        _Bool flag = 1;
       
        printf("请输入一个整数:");
        scanf("%lld",&num);
       
        for(i=2;i<num/2;i++)                       
        {
                if(num%i==0)                               
                {
                        flag=0;               
                        break;
                }
        }
       

       
        if(flag)                               
        {
                printf("%lld是一个素数!\n",num);
        }
        else
        {
                printf("%lld不是一个素数!\n",num);
        }
       
        printf("i = %lld\n",i);
       
        return 0;
       
}







大家好,这是老师在上课讲的。
为什么我这里输123 ,i=3,我算不明白 。 输入13,i=6,能帮我看看嘛。

jackz007 发表于 2022-9-26 20:42:43

本帖最后由 jackz007 于 2022-9-26 20:48 编辑

      for(i=2;i<num/2;i++)         
      num = 13 的时候 i = 6,由于,13/2=6 说明循环到头都没有找出能整除 num 的 i。
      num = 123 的时候 i = 3,3 显然不等于 123/2,循环是在 i = 3 的时候结束的,说明 123 最小的因子是 3,同时,最大因子是 123/3=41。
      

jifeifei 发表于 2022-9-26 20:47:18

jackz007 发表于 2022-9-26 20:42
13/2=6 说明循环到头都没有找出能整除 num 的 i。

原来是这样,谢谢!!~

ba21 发表于 2022-9-26 20:50:33

123 % 3 == 0 所以 i=3

13 % 2 ..... 13%6 都!=0 所以 i =6

jifeifei 发表于 2022-9-27 15:12:44

ba21 发表于 2022-9-26 20:50
123 % 3 == 0 所以 i=3

13 % 2 ..... 13%6 都!=0 所以 i =6

好滴,谢谢{:10_298:}
页: [1]
查看完整版本: S1E15 素数