为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信