我试图找到数字705561475143的主要因素。
在我的代码中,函数primeFactor()
搜索某个整数中的所有因子,将它们插入到函数Prime()
中,该函数将数字更改为0或不更改它一点都不如果该数字未更改为0,则它应为应添加到列表中的素数。
import math
def Prime(n):
isPrime = False
r = range(2, int(math.sqrt(n)+5))
a = 1
for b in r:
if r[a] >= int(math.sqrt(n)+2):
break
elif n % r[a] != 0:
a += 1
elif n % r[a] == 0 & n != r[a] & n != 1:
n = 0
break
def primeFactor(m):
l = []
for x in range(1, m+1):
if m % x == 0:
if Prime(m) != 0:
l.append(x)
print(l)
然而,当我输入
> primeFactor(36)
我得到了
> [1,2,3,4,6,9,12,18,36]
而不是
> [2,3]
当我输入
> primeFactor(705561475143)
代码无法给我答案。
答案 0 :(得分:4)
首先,为什么要将m+1
用于x in range()
?请注意,您可能只想使用range(2, m/2, 1)
- 看看您是否能找出原因。
其次,
if m % x == 0:
if Prime(m) != 0:
l.append(x)
如果m
可以被x
整除,那么它就不能成为素数而且调用Prime(m)
是无用的。我怀疑你打算传递x
作为论据。 (假设x
不是0或== m
)
第三,Prime()
永远不会返回任何东西。这意味着它总是!= 0
。
最后,为了帮助你,我link you to some of my own answers to this question。