Cyzyt 发表于 2019-10-16 19:48:12

阶段考核

#include <stdio.h>
#include <math.h>

int main()
{
      long long i, j, k, l, num = 600851475143;
      _Bool flag = 1;

      for (i = 2, j = num/i; flag != 0; i++, j = num/i, flag = 1)
      {
                if (i * j == num)
                {
                        k = sqrt((double)j);
                        for (l = 2; l <= k; l++)
                        {
                              if (j % l == 0)
                              {
                                        flag = 0;
                                        break;
                              }
                        }
                        if (flag)
                        {
                              break;
                        }
                }
      }

      printf("%lld\n", i);               //为什么这里是i为最大质数因子,不是j吗

      return 0;
}

superbe 发表于 2019-10-16 22:30:23

应该是 j ,用一个小点的num测试一下就知道了

Cyzyt 发表于 2019-10-22 12:51:47

不是哦,i带进去才是对的,然后我就不知道为什么了

superbe 发表于 2019-10-22 15:01:14

本帖最后由 superbe 于 2019-10-22 15:07 编辑

上面程序运行结果是 i = 87625999,这个都不是质数,它的因子有:
71 839 1471 59569 104441 1234169,结果不对吧。
应该是 j。
页: [1]
查看完整版本: 阶段考核