byzh168 发表于 2018-3-24 16:39:10

为什么j的开方要赋给k呢,这个编程有点看不懂。求解

本帖最后由 byzh168 于 2018-3-24 16:40 编辑

#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", j);

      return 0;
}

BngThea 发表于 2018-3-24 17:29:52

因为一个数的最大素数因子不会超过其开方的值

Zmynx_2017 发表于 2018-3-24 17:58:41

BngThea 发表于 2018-3-24 17:29
因为一个数的最大素数因子不会超过其开方的值

6 = 2 * 3,但是3的平方是9啊

BngThea 发表于 2018-3-25 07:16:36

Zmynx_2017 发表于 2018-3-24 17:58
6 = 2 * 3,但是3的平方是9啊

我的描述有点问题,本意是指一个素数的判定指需要从2到其开根号即可

wpt 发表于 2018-3-29 14:17:28

Zmynx_2017 发表于 2018-3-24 17:58
6 = 2 * 3,但是3的平方是9啊

6的开方是取证是2,对2取余就可以知道6不是素数了
页: [1]
查看完整版本: 为什么j的开方要赋给k呢,这个编程有点看不懂。求解