python - 如何在这里正确使用列表?
问题描述
我的问题如下:我想创建一个程序,该程序接受大于 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 = 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
我将不胜感激任何帮助!提前致谢!
解决方案
您基本上只需要更改此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
推荐阅读
- laravel - Laravel - cache:clear 命令是否也会清除配置缓存?
- python - 如何验证请求正文是进入 python 烧瓶应用程序的有效 JSON
- spring-boot - 发送html电子邮件的问题
- automation - 空手道 UI 拖放
- ffmpeg - ffmpeg 图像生成输出结果
- java - 检查 char[] 是否仅包含一个字母和一个 int
- scala - 如何在不执行的情况下获取 spark sql 查询的列
- python - 如何合并两个大小不等的数据框
- flutter - Flutter:如何使用 ListTile 作为子项创建 DropdownMenuItem
- python - Python 在 Windows 上操作命令提示符