gpt4 book ai didi

python - 初级素数分解

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:09 25 4
gpt4 key购买 nike

我编写了一个初学者程序,旨在查找和打印任意数字的质因数:

def is_prime(n):
if n == 3:
return True
elif n == 4:
return False
else:
n = int(n**0.5)+1
for i in range(2,n):
if n % i == 0:
return False
return True

def prime_factors(n):
for i in range(2,n):
if n % i == 0:
x = i
primes.append(x)
y = n / x
return y
break


primes = []

def main(y):
while not is_prime(y):
y = prime_factors(y)
primes.append(y)
print(primes)

以下是程序运行的示例,让我感到困惑:

main(625)

[5, 5, 5, 5]

...

main(160)

[160]

...

main(6)

[6]

...

main(1007)

TypeError: unsupported operand type(s) for ** or pow(): 'NoneType' and 'float'

有些输入有效,有些无效。我不知道为什么。我也不知道如何解决这个错误。请帮忙。谢谢。

最佳答案

您的 is_prime 函数似乎在这些行中错误地重用了变量 n:

    n = int(n**0.5)+1
for i in range(2,n):
if n % i == 0:

您可能会考虑使用更具描述性的名称,例如 factor_limit

关于python - 初级素数分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30040571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com