Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的因子分解_Python_Factorization - Fatal编程技术网

python中的因子分解

python中的因子分解,python,factorization,Python,Factorization,此代码运行良好。比如说1980年,它给出的结果是2^2*3^2*5^1*7^0*11^1*(最后还有一个额外的星号。我可以删除它。这与我的问题无关。 代码是: prime=[2,3,5] f=7 def next_prime(f): j=0 while j==0: for x in prime: if f%x==0: f+=2 break else:

此代码运行良好。比如说1980年,它给出的结果是2^2*3^2*5^1*7^0*11^1*(最后还有一个额外的星号。我可以删除它。这与我的问题无关。 代码是:

prime=[2,3,5]
f=7
def next_prime(f):
    j=0
    while j==0:
        for x in prime:
            if f%x==0:
                f+=2
                break
        else:
            j=1
    return f;
def factorization(n):
    list=[2,3,5]
    power=[]
    x=0
    while x<len(list):
        j=0
        while n%list[x]==0:
            j+=1
            n=n/list[x]
        power.append(j)
        x+=1
    if n!=1:
        while n!=1:
            g=next_prime(f)
            j=0
            while n%g==0:
                j+=1
                n=n/g
            else:
                power.append(j)
                prime.append(g)
    x=0
    while x<len(power):
        print(prime[x],"^",power[x],"*",end="")
        x+=1

factorization(1980)
prime=[2,3,5]
f=7
def下一个_素数(f):
j=0
当j==0时:
对于素数中的x:
如果f%x==0:
f+=2
打破
其他:
j=1
返回f;
def因子分解(n):
列表=[2,3,5]
功率=[]
x=0

而x如果你只想得到一个数的素因子,你可以试试:

def primefactors(x):
    factorlist=[]
    loop=2
    while loop<=x:
        if x%loop==0:
            x/=loop
            factorlist.append(loop)
        else:
            loop+=1
    return factorlist

我没有分析您的逻辑,但是您错误地使用了
else
子句。
while..else
只有在
while
中调用
break
时才有意义。在第一个代码示例中,始终执行
else
分支

例如,即使以下代码也将运行
else
branch:

while False:
    print 'while'
else:
    print 'else'
要补充imsc的答案,
实际上,有一种算法使用loop=6和loop+=6,然后尝试loop+1和loop-1,这两种算法运行得更好。但是必须先手动尝试2和3。

list
是变量名的错误选择。它隐藏了内置的
list
类型名。OK..我有我的prblm..thx!
primefactors(1980)
[2, 2, 3, 3, 5, 11]
primefactors(13860)
[2, 2, 3, 3, 5, 7, 11]
while False:
    print 'while'
else:
    print 'else'