晨曦之星 发表于 2020-4-26 14:38:16

关于c语言第一阶段考核第二题的答案

本帖最后由 晨曦之星 于 2020-4-26 14:42 编辑

下面是这题的答案
#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;
}

因为他题目有举例子,13195 的质数因子有 5, 7, 13 和 29,所以我把下面的num改成13195,但结果却是455
请问这是为什么!

sunrise085 发表于 2020-4-26 15:10:32

这个程序打算要什么结果?
最大质因数?
若是要求最大质因数,那最后那个printf输出的应该是j,而不是i

晨曦之星 发表于 2020-4-26 15:20:33

sunrise085 发表于 2020-4-26 15:10
这个程序打算要什么结果?
最大质因数?
若是要求最大质因数,那最后那个printf输出的应该是j,而不是i

我刚刚问的时候还没理解这段程序,所以看不出来i和j代表的意思,那应该是答案错了吧
页: [1]
查看完整版本: 关于c语言第一阶段考核第二题的答案