如何修复素数检查/因子分解函数

2024-05-15 12:39:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在四处游荡学习python。我想创建一个模块来检查素数并分解给定的数字。但是导入模块会导致在我运行代码时经常出现这些因素。 当我运行导入函数3次时,我得到的结果是:“60不是素数。其系数为:[2,2,3,5,2,2,3,5,2,2,2,3,5]。”

我认为问题在于我在函数之前定义了数组素数因子。 当我尝试将数组放入函数时,它只给出:“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]“对于素检查器


Tags: 模块函数ifdefnp数字数组else
1条回答
网友
1楼 · 发布于 2024-05-15 12:39:23

是的,没错。这将起作用(为了清晰起见,需要进行一些间距编辑):

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

作为一般原则,除非有充分的理由,否则函数不应修改其范围之外的变量。返回某些内容比修改全局变量要好得多

相关问题 更多 >