我的问题如下:我想创建一个程序,它接受大于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
我将感谢任何帮助!提前谢谢
您基本上只需要更改这个
if
语句到
while
循环,以便可以添加重复的素数因子:但代码可以进一步简化。首先,你根本不需要为素数做一个特例;它们只是有一个素数因子的数。此外,您可以直接迭代
l_prime
的元素,而不是使用索引,尤其是disposable
变量没有任何用途。由于要测试的素数较少,您甚至可能会删除break
相关问题 更多 >
编程相关推荐