山芋 发表于 2021-6-29 09:49:20

c

永恒的蓝色梦想 发表于 2021-6-29 09:49:21

https://fishc.com.cn/forum.php?mod=viewthread&tid=60409

山芋 发表于 2021-6-29 09:51:51

对不起手快了一个回车,问题在这,c作业的第一个阶段检测,我看不懂答案,大哥们救救我,
#include <stdio.h>
#include <math.h>

int main()
{
      long long i, j, k, l, num = 600851475143;//求num的最大质数因子
              int flag = 1;

      for (i = 2, j = num/i; flag != 0; i++, j = num/i, flag = 1)
      {
                if (i * j == num)//i和j是两个因子 ,i从最小的开始,j就最大
                {
                        k = sqrt((double)j);
                        for (l = 2; l <= k; l++)
                        {
                              if (j % l == 0)//判断j是不是质数,不是就下一对
                              {
                                        flag = 0;
                                        break;
                              }
                        }
                        if (flag)//j 是质数,跳出循环
                        {
                              break;
                        }
                }
      }

      printf("%lld\n", i);//为啥输出变成i了,看不懂了

      return 0;
}

连帅帅 发表于 2021-6-29 09:52:05

???

山芋 发表于 2021-6-29 09:52:50

注释是我的理解,我以为,一直求的j是最大的质数因子,为啥输出的时候输出i啊,我看不懂,

山芋 发表于 2021-6-29 09:54:06

连帅帅 发表于 2021-6-29 09:52
???

手太快了一个回车帖子发出去了,我都懵了

山芋 发表于 2021-6-29 09:56:21

连帅帅 发表于 2021-6-29 09:52
???

大哥来都来了教教我快

黎明的黄昏 发表于 2021-6-29 10:18:27

本帖最后由 黎明的黄昏 于 2021-6-29 10:23 编辑

你看一下你的输出语句,输出的值就是设成了i    呀

山芋 发表于 2021-6-29 15:28:57

黎明的黄昏 发表于 2021-6-29 10:18
你看一下你的输出语句,输出的值就是设成了i    呀

这是老师的答案,我就是不懂为啥输出i不是j

山芋 发表于 2021-6-29 15:35:25

是我提问的方式有问题吗,愁

wsw530 发表于 2021-6-29 19:37:01

本帖最后由 wsw530 于 2021-6-29 20:26 编辑

这个答案是有些问题的,可以带入一些数字去试试
如果num=35 则程序执行结果为5,而实际应该为7{:10_250:}

山芋 发表于 2021-6-30 14:41:24

永恒的蓝色梦想 发表于 2021-6-29 09:49
https://fishc.com.cn/forum.php?mod=viewthread&tid=60409

谢谢大哥,虽然由于太菜看晕了,但是复制了几个运行一下能知道答案了

山芋 发表于 2021-6-30 14:42:15

wsw530 发表于 2021-6-29 19:37
这个答案是有些问题的,可以带入一些数字去试试
如果num=35 则程序执行结果为5,而实际应该为7

谢谢老哥,
页: [1]
查看完整版本: c