Python - Prime数字代码

时间:2013-11-24 13:56:09

标签: python prime-factoring

我试图找到数字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)

代码无法给我答案。

1 个答案:

答案 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