#33027:


charles52067@gmail.com (王奕晨)

學校 : 不指定學校
編號 : 169643
來源 : [101.136.215.217]
最後登入時間 :
2022-01-03 11:15:37
a010. 因數分解 | From: [36.238.107.45] | 發表日期 : 2022-11-24 04:44

while True:
    try:
        n=int(input())
        ans=[]
        if n!=1:
            for i in range(2,n):
                count=0
                if n%i==0:
                    while n%i==0:
                        n=n//i
                        count+=1
                    if count==1:
                        ans.append(f"{i}")
                    else:
                        ans.append(f"{i}^{count}")
            ans=" * ".join(ans)    
            print(ans)
    except :
        break

請問有甚麼可以改善的嗎?

 
#33060: Re: TLE


411034018@mail.nknu.edu.tw (王奕晨)

學校 : 不指定學校
編號 : 172246
來源 : [140.127.41.248]
最後登入時間 :
2024-02-26 13:47:57
a010. 因數分解 | From: [36.238.107.45] | 發表日期 : 2022-11-25 16:00

while True:
    try:
        n=int(input())
        ans=[]
        if n!=1:
            for i in range(2,n):
                count=0
                if n%i==0:
                    while n%i==0:
                        n=n//i
                        count+=1
                    if count==1:
                        ans.append(f"{i}")
                    else:
                        ans.append(f"{i}^{count}")
            ans=" * ".join(ans)    
            print(ans)
    except :
        break

請問有甚麼可以改善的嗎?

用遞迴的方法後就過了!!!

n=int(input())#輸入
ans=[]#紀錄達案用的list
for i in range(2,n+1):#i從2到n
    cnt=0#次方數=0
    if n==1:#如果輸入是1則跳出迴圈
        break
    
    def A(n,i,cnt):#建立一個方法A
        if n%i==0:#如果n除以i的餘數為0
            n=n//i#n=n除以i
            cnt+=1#次方數加1
            n=A(n,i,cnt)#執行方法A
        else:##如果n除以i的餘數不為0
            if cnt==0:#如果次方數不為0
                pass#跳過
            elif cnt==1:#如果次方數=1
                ans.append(f"{i}")
            else:#如果次方數不為0和1
                ans.append(f"{i}^{cnt}")
        return n #返回n       
    if n%i==0:#如果n除以i的餘數為0
        n=A(n,i,cnt)#執行方法A
ans=" * ".join(ans)#將list裡的元素用" * "連接
print(ans) #印出ans

 
ZeroJudge Forum