con*_*nks 1 python primes factors
我写了一个初学者程序,旨在查找和打印任何数字的素数因子:
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)
Run Code Online (Sandbox Code Playgroud)
以下是该程序的运行示例,让我感到困惑:
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'
Run Code Online (Sandbox Code Playgroud)
有些投入有效,有些则没有.我无法弄清楚为什么.我也无法弄清楚如何解决这个错误.请帮忙.谢谢.
您的is_prime函数似乎错误地重用了n这些行中的变量:
n = int(n**0.5)+1
for i in range(2,n):
if n % i == 0:
Run Code Online (Sandbox Code Playgroud)
您可以考虑使用更具描述性的名称,factor_limit例如.
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |