繁体   English   中英

Python-素数代码

[英]Python - Prime numbers Code

我正在尝试查找数字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)

该代码无法给我答案。

首先,为什么要对x in range()x in range()使用m+1 请注意,您可能只想使用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

最后,为了给您一点帮助,我将把您链接到我对这个问题的一些答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM