Largest prime factor on huge number failed
我在研究Euler项目的问题,这是第五个问题:
最大主因子问题313195的主要因素是5、7、13和29。
数字600851475143的最大主因子是什么?
我得到了工作代码:
1 2 3 4 5 6 7 8 9 10 11 12 | def factor(x, f=2): while x >= f*f: while x % f == 0: x = int(x/f) factor = f f += 1 print(f'x = {x}, last factor = {factor}') # print for debug only return max(x, factor) |
系数(19*19*19*19*19*19*19*19*19*19*1999989899)
X=33170854034208712,最后一个系数=182128674
33170854034208712
有人知道这为什么不能给出正确的答案吗?
应该使用整数除法运算符//而不是浮点除法运算符/
除此之外,您的代码是正确的
1 2 3 | while x % f == 0: x = int(x//f) factor = f |
号
产量
1 2 | x = 577, last factor = 541 |
除法运算符差
1 2 3 4 5 6 7 8 9 | Python 3.7.1 (default, Nov 6 2018, 18:46:03) [Clang 10.0.0 (clang-1000.11.45.5)] on darwin Type"help","copyright","credits" or"license" for more information. >>> >>> >>> print(645372136089564734321//19) 33966954531029722859 >>> print(645372136089564734321/19) 3.396695453102972e+19 |
。
我只是白手起家地讨论这个问题。下面是我的代码,很像你的
1 2 3 4 5 6 7 8 9 10 11 12 13 | def largest_prime_divisor(x, f=2): while f**2 <= x: if x % f == 0: x //= f else: f+=1 return x print(largest_prime_divisor(25)) # 5 print(largest_prime_divisor(13195)) # 29 n = 19*19*19*19*19*19*19*19*19*1999989899 print(largest_prime_divisor(n)) # 577 this is prime |