此代碼工作正常。說1980年它給出的結果2^2 * 3^2 * 5^1 * 7^0 * 11^1 *(一個額外的星號保留在最後,我可以刪除它,這與我無關。問題 的代碼是:分解python
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)
然後如果我想從結果中刪除術語7^0因此所有這些具有功率爲零的素數,我如果j由在管線31(變化!= 0:而不是否則:)。然後代碼不工作。它適用於像13860這樣的數字,其中沒有像1980年那樣的數字,沒有數字的零點。我找不到問題! 改變的代碼是:
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
if j!=0:
power.append(j)
prime.append(g)
x=0
while x<len(power):
print(prime[x],"^",power[x],"*",end="")
x+=1
factorization(1980)
'list'是變量名的錯誤選擇。它會隱藏內置的'list'類型名稱。 – 2012-07-26 08:18:44
okk ..我有我的prblm .. thx! – 2012-07-26 08:31:18