亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這里如何正確使用列表呢?

這里如何正確使用列表呢?

aluckdog 2023-10-31 19:16:52
我的問題如下:我想創建一個程序,它接受大于 0 且小于 21 的整數,并且這些整數之間用一個空格分隔。然后我想創建一個列表,其中素數將被附加而不進行任何更改,非素數將被拆分為元素,這些元素將是素數。輸入: 3 6 7 12輸出: [3,2,3,7,2,2,3]這就是我想出的。當我嘗試使用上述輸入運行程序時,對于 12,它僅輸出 2 和 3,而沒有另一個 2。這里可能有什么問題?l_prime = [2,3,5,7,11,13,17,19]l = []disposable = Noneiterate = input().split()for i in iterate:  a = int(i)  for j in range (0,len(l_prime)):    disposable = j    if a == l_prime[j]:      l.append(l_prime[j])    else:      if a % l_prime[disposable] == 0:        l.append(l_prime[disposable])        a = a / l_prime[disposable]      else:        if a <= 1:          break        else:          disposable += 1l我將不勝感激任何幫助!提前致謝!
查看完整描述

1 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

你基本上只需要改變這個if聲明


if a % l_prime[disposable] == 0:

到while循環中,以便您可以添加重復的質因數:


while a % l_prime[disposable] == 0:

但代碼還可以進一步簡化。首先,您根本不必對素數進行特殊處理;它們只是具有單個素因數的數字。此外,您可以直接迭代 的元素,l_prime而不是使用索引,特別是該disposable變量根本沒有任何用途。鑒于要測試的素數數量很少,您甚至可能會放棄break


for a in map(int, iterate):

    for p in l_prime:

        while a % p == 0:

            l.append(p)

            a //= p


查看完整回答
反對 回復 2023-10-31
  • 1 回答
  • 0 關注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號