如何在这里正确使用列表?

2024-06-12 19:02:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题如下:我想创建一个程序,它接受大于0小于21的整数,这些整数之间用一个空格隔开。然后我想创建一个列表,其中素数将被追加而不做任何更改,非素数将被拆分为元素,这些元素将是素数

输入:36712

输出:[3,2,3,7,2,2,3]

这就是我想到的。当我试着用上面提到的输入运行程序时,对于12,它只输出2和3,没有另外的2。这里有什么问题

l_prime = [2,3,5,7,11,13,17,19]
l = []
disposable = None
iterate = 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 += 1
l

我将感谢任何帮助!提前谢谢


Tags: in程序none元素列表forif整数
1条回答
网友
1楼 · 发布于 2024-06-12 19:02:50

您基本上只需要更改这个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

相关问题 更多 >