#23486: 拜託各位大佬幫我看一下d出了什麼問題,程式萌新


811270@stu.cchs.chc.edu.tw (蔡銘恩)

學校 : 不指定學校
編號 : 137700
來源 : [163.23.125.147]
最後登入時間 :
2020-11-17 14:14:07
a010. 因數分解 | From: [118.163.203.124] | 發表日期 : 2020-11-21 20:45

a=int(input())

for i in range(2,a+1):

    s=0

    b=a

    d=0

    if a%i==0:

        for x in range(1,i+1):

            if a%x==0:

                d=d+x

        if (d-1)/i==1:

            d=0

            print(i)            

        else:

            s=0

            b=a

            d=0

            continue

            d=0            

        while(b>0):

            if (b/i)%1==0:

                s=s+1

                b=b/i

            else:

                b=0

                if b==1:

                    b=0

        print(s)

 

 
#23501: Re:拜託各位大佬幫我看一下d出了什麼問題,程式萌新


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a010. 因數分解 | From: [123.194.188.217] | 發表日期 : 2020-11-23 18:25

可以的話,希望你註解一下各段程式在做什麼?我看到這邊就卡住了

for x in range(1,i+1):
    if a%x==0:
        d=d+x

這裡提供一個解題方向,以輸入 x 來說,要找到多個可整除 x 的數 a,看會整除到幾次方,表示成 a^n (n=1 時可省略 ^n)

上述可以寫成

while x % a == 0:
    x //= a
    n += 1

後面要處理各個 a 之間的乘號 *

 

最後幾點提醒

  • print(i) 會在印出後立刻換行,可以改成 print(i, end='') 或用字串串接
  • Python 的單斜線除法 / 會給 float,要拿 int 的話請用雙斜線 //
要改的事情太多,還是改天吧(茶)
 
ZeroJudge Forum