このコードは正常に動作しています。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)
次に、結果から項7 ^ 0を削除したい場合、したがって、べき乗がゼロのすべての素数を削除したい場合は、31 行目で変更を行いました ( if j!=0:の代わりにelse: )。そして、コードが機能しません。1980 のような数ではなく、素数の累乗がゼロでない 13860 のような数で機能します。問題が見つかりません! 変更されたコードは次のとおりです。
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)