【发布时间】:2022-12-31 14:19:33
【问题描述】:
我想输入以空格分隔的数字作为输入并将它们存储在列表中。我想将该列表中的所有孪生素数作为输出。如果输入的数字中没有任何孪生素数,我想输出 "No any twin primes"。
Twin Prime - 两个素数之差为 2
所以我的代码是这样的:
lst = input()
test_list =[]
for ele in lst.split():
n_int = int(ele)
test_list.append(n_int)
def prime(x):
for k in range(2, x):
if x%k == 0:
return False
return True
diff = 0
for i in test_list:
for j in test_list:
if prime(i) and prime(j):
diff = abs(i-j)
if diff == 2:
print(i, j)
print("No any twin primes")
如果我输入像3 4 5 7 8这样的数字系列,我希望得到一个输出
3 5
5 7
但我的输出是
3 5
5 3
5 4
5 7
5 9
7 5
No any twin primes
如果输入列表中没有任何孪生素数 (2 3 7 9),我会得到预期的输出
No any twin primes
.
【问题讨论】:
-
它正在做你告诉它做的事情。例如,无论如何它总是打印“没有任何孪生素数”——因为你告诉它这样做。你真的需要在调试器中遵循它。看 diff 的值。查看您正在测试的 i, j 对。您是否考虑过使用 itertools?