我正在玩耍学习python。我想创建一个模块来检查素数并分解给定的数字。但是导入模块会导致因素在我运行代码时出现的频率很高。 当我像3次运行导入的函数时,我得到的结果是:“ 60不是素数。它的因子是:[2、2、3、5、2、2、3、5、2、2、3、5]”
我认为问题在于我在函数之前定义了数组prime_factors。 当我尝试将数组放入函数中时,它仅给出:“ x不是质数。它的因子是[]”,其中x是我要检查的数字。
prime_factors=[]
def factorize(x):
i=2
while i <= x:
if x%i==0:
x=x/i
prime_factors.append(i)
else:
i+=1
def prime_check(x):
import numpy as np
factorize(x)
if np.size(prime_factors)==1:
print(str(x)+" is prime.")
else:
print(str(x)+" is not prime. Its factors are: "+str(prime_factors))
我只是想要输出,例如:“ 60不是素数。它的因子是:[2,2,3,5]”。
答案 0 :(得分:0)
是的,没错。这将起作用(为清晰起见,可以进行一些间距编辑):
def factorize(x):
prime_factors = []
i = 2
while i <= x:
if x % i == 0:
x /= i
prime_factors.append(i)
else:
i += 1
return prime_factors
作为一般原则,除非有充分的理由,否则您的函数不应在其范围之外修改变量。最好是返回一些东西,而不是修改全局变量。