iT邦幫忙

0

我才剛學python沒多久,拜託各位幫我解決這題因數分解

My code:

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)
    [https://zerojudge.tw/ShowProblem?problemid=a010](http://)
ccutmis iT邦高手 7 級 ‧ 2020-11-22 00:35:29 檢舉
https://www.google.com.tw/search?q=%E8%B3%AA%E5%9B%A0%E6%95%B8%E5%88%86%E8%A7%A3+python
sam0407 iT邦高手 1 級 ‧ 2020-11-23 09:04:34 檢舉
老師太壞了,同學們才剛學Python,怎麼可以出因數分解這麼困難的作業!生氣氣~~

1 個回答

1
微甜的酸
iT邦新手 4 級 ‧ 2020-11-22 20:10:35

拿去給老師看,一定讓他的下巴掉下來(除非他有雙下巴撐著)
#單行挑戰(感謝ccutmis補充)

print((lambda num : [i for i in range(1, num+1) if not num % i])(int(input("Enter a number:"))))

#詳解

num = int(input("請輸入一個整數: "))
for i in range(2, num):
  if num % i == 0:
    power = 0
    print(i, end="^")
    while num % i == 0:
      power += 1
      num /= i
    print(power, end=' ')
看更多先前的回應...收起先前的回應...
ccutmis iT邦高手 7 級 ‧ 2020-11-22 22:50:33 檢舉
print((lambda num : [i for i in range(1, num+1) if not num % i])(int(input("Enter a number:"))))
""" 補充 這樣寫效果相同 可以縮短11個字元 且易讀性更好一些 """

感謝補充

下巴掉下來不至於。
年輕時都會想挑戰行數越短越好。
等到年紀大了才知道容易閱讀才重要。

好的 我會改過這壞習慣

froce iT邦大師 1 級 ‧ 2020-11-23 16:34:39 檢舉

我都是要作業解答的才寫這樣的code。科科

秋米苗 iT邦新手 5 級 ‧ 2020-11-24 09:13:50 檢舉

"2"當例外,range(3, num, 2)能提升50%效能

我要發表回答

立即登入回答