counter = 0
numList = []
beginning = 1
primeOrNot = False
number = int(input("Type a number to check if it's prime."))
while True:
if number == 2:
primeOrNot = True
elif "2" in str(number) or "4" in str(number) or "6" in str(number) or "8" in str(number) or "0" in str(number) or number == 1:
primeOrNot = False
numList = [''.join(p) for p in permutations(str(number))]
for p in range(0, len(numList)):
numList[p] = int(numList[p])
for u in range(2, number):
if all(o % u == 0 for o in numList):
counter = counter + 1
if counter == 0:
print(numList)
break
我试图使它打印出一个素数,如果所有的数字排列也是素数。
我已经试着用all做过了,但它所做的是检查列表中是否至少有1个元素符合o % u = 0
。我想让它检查所有元素是否都工作,而不是一个元素是否工作。我能用all或其他方法做什么
现在的输出示例:
输入:12
输出:无,12和21都不是素数
输入:35
输出:35, 53
虽然35不是质数,但它会打印,因为53是质数
你的逻辑是错误的:
对于该范围内的每个潜在除数,检查该除数是否进入输入的每个排列中。你认为
u
的什么值将同时除以35和53首先,您需要将其设置为
any
,而不是all
。 其次,我强烈建议您查找如何查找素数和/或因子数。您可以学习更好的处理方法,尤其是当您的输入字符串较长时另外,请注意,输入中的
0
或5
也将确保某些排列是复合的;假设输入至少是两位数字,它必须完全由1379
位组成相关问题 更多 >
编程相关推荐