第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

數(shù)字分解。

數(shù)字分解。

楊__羊羊 2021-08-14 13:42:24
任務(wù)是編寫將數(shù)字折疊為質(zhì)因數(shù)的函數(shù)。根據(jù)給定的數(shù)字“n”,此函數(shù)應(yīng)返回元組列表p_i,c^i,例如,如果輸入為 100,則輸出為 (2,2),(5,2)。所以,這是我嘗試編寫它的方式:def factor(n):c = 1pre_ans = list()temp_n=nfor i in range(2,temp_n+1):    if (is_prime(i) == True) and (temp_n % i == 0):        for j in range (2,temp_n+1):            if (temp_n % (i ** j) == 0):                pre_ans.append((i,j))                temp_n /= (i **j)        pre_ans.append((i,c))        temp_n /= iprint(pre_ans)它工作錯(cuò)誤,但我找不到錯(cuò)誤:(
查看完整描述

2 回答

?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

修復(fù)了代碼。這是工作版本


def factor(n):

c = 1

pre_ans = list()

temp_n=n

for i in range(2, n // 2 + 1):

    if (is_prime(i) == True):

        k = 1

        while temp_n % (i ** k) == 0:

            if temp_n % (i ** (k + 1)) == 0:

                k += 1

            else:

                k += 1

                break

        if k > 1:

            pre_ans.append((i, k - 1))

return pre_ans


查看完整回答
反對 回復(fù) 2021-08-14
?
繁星點(diǎn)點(diǎn)滴滴

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊

你的總體思路是可以的。但是,您的代碼的以下部分存在一些小問題:


for j in range (2,temp_n+1):

    if (temp_n % (i ** j) == 0):

        pre_ans.append((i,j))

        temp_n /= (i **j)

pre_ans.append((i,c))

temp_n /= i

事實(shí)上,主要問題是您需要在此語句的另一個(gè)方向上進(jìn)行迭代for j in range (2,temp_n+1)。如果你像這樣重寫它


def factor(n):

    c = 1

    pre_ans = list()

    temp_n=n

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

        if (is_prime(i) == True) and (temp_n % i == 0):

            for j in range (temp_n+1, 0,-1):

                if (temp_n % (i ** j) == 0):

                    pre_ans.append((i,j))

                    temp_n /= (i **j)

    print(pre_ans)

它會(huì)起作用。整個(gè)代碼也可以寫得更短一些:


from collections import Counter


def factor(n):

    lst = []

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

        while n % i == 0:

            lst.append(i)

            n = n / i

    return Counter(lst).items()


print(factor(100))


查看完整回答
反對 回復(fù) 2021-08-14
  • 2 回答
  • 0 關(guān)注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號