为什么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
因为一个数的最大素数因子不会超过其开方的值
6 = 2 * 3,但是3的平方是9啊 Zmynx_2017 发表于 2018-3-24 17:58
6 = 2 * 3,但是3的平方是9啊
我的描述有点问题,本意是指一个素数的判定指需要从2到其开根号即可 Zmynx_2017 发表于 2018-3-24 17:58
6 = 2 * 3,但是3的平方是9啊
6的开方是取证是2,对2取余就可以知道6不是素数了
页:
[1]