速度很慢,求更优解
def chick(x):
for i in range(2,x):
if not x%i:
return False
else:
return True
a=600851475143
for i in range(a//2,0,-1):
if not a%i:
if chick(i):
print(i)
break
1
学习中{:5_110:}
欧拉计划 发表于 2023-5-31 01:27
刺激啊,复杂度已经降到 O(√n)
Pollard-Rho 呢{:10_277:}{:10_256:}
讲得很详细,学到了{:10_282:}
打卡打卡
学会了
讲得很好
1
1
def largest_prime_factor(n):
i = 2
while i * i <= n:
if n % i:
i += 1
else:
n //= i
return n
number = 600851475143
result = largest_prime_factor(number)
print(result)
小粪坨屎团团小兔球球
学些学习!
学习学习
{:10_254:}
本帖最后由 超神奇葩天才 于 2023-12-25 21:01 编辑
import math
import math
global n
global factor
factor = []
n = int(input())
#n = 600851475143
def _factor():
global n
n = int(n)
for i in range(2,math.isqrt(n)+3):
if n % i == 0:
n /= i
factor.append(i)
_factor()
elif n <= i:
break
_factor()
print(factor[-1])
这个思路怎么样
直接枚举,
这题因为因数数量多,欧拉筛效率反而不如穷举
ulong test3(ulong n)
{
ulong res=2;
while(res*res<n)
{
if(n%res)
{
res++;
continue;
}
n/=res;
}
return std::max(res,n);
}
test
原来全部是数学问题的编程解法
真不错