Sparin 发表于 2020-2-7 22:10:44

第一阶段考核的第2题,不知解题思路,答案看不懂

题目:编写一个程序,求解 600851475143 的最大质数因子是多少?
(每个合数都可以写成几个质数(素数)相乘的形式,这几个质数就都叫做这个合数的质数因子。
比如 13195 的质数因子有 5, 7, 13 和 29。)
1.能否说下该如何设计该程序?
2.解析下答案为何要这样做?(越全面越好)
答案:
#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);

      return 0;
}


页: [1]
查看完整版本: 第一阶段考核的第2题,不知解题思路,答案看不懂