以下用于素数分解的 Python 程序不起作用

Posted

技术标签:

【中文标题】以下用于素数分解的 Python 程序不起作用【英文标题】:The following Python program for prime factorization does not work 【发布时间】:2016-09-22 11:17:55 【问题描述】:

我对 Python 比较陌生。现在,我知道有很多更好的素因数分解程序,但我尝试在没有任何帮助的情况下编写代码并卡住了。代码如下:

def is_prime(n):
    i =2
    while i<n:
        if n%i==0:
            return False
        i+=1
    return True
def prime_factor(n):
    b = n
    factor=[]
    i = 2
    while i<b and is_prime(i):
        while n%i ==0:
            factor.append(i)
            n/=i
            continue
        i+=1
    return factor
print (prime_factor(28))

该代码适用于某些数字(27、24、12、18 等),但对于 28 则失败。我得到的输出为 [2,2] 的值 28。故障在哪里?

【问题讨论】:

【参考方案1】:

while 条件中的问题:

while i<b :
    while is_prime(i) and n%i ==0:
        factor.append(i)
        n/=i
        continue
    i+=1

【讨论】:

以上是关于以下用于素数分解的 Python 程序不起作用的主要内容,如果未能解决你的问题,请参考以下文章

循环的素数python

当安装程序不起作用时,如何正确卸载/修复 python 3.8.5?

Perforce 后用户编辑触发器不起作用,用作用户前编辑

用于原子访问的文件锁定不起作用

任何/所有python短路:为啥以下不起作用?

素数分解程序不适用于某些输入