所以我想弄清楚如何找到 2 个数字之间的所有回文素数。 到目前为止,我的代码可以找到回文,但是当我检查质数时,它也会打印出非质数。并且有多次打印的数字。
你能帮忙吗
谢谢。
a = 0
b = 500
a += 1
for i in range(a,b):
if(str(i) == str(i)[::-1]):
if(i>2):
for a in range(2,i):
y = True
if(i%a==0):
y = False
break
if y:
print(i)
最佳答案
根据您最近的代码,您只需确保为您测试的每个数字重置 y
,它作为您的素数正指标。否则,当您到达数字 4(第一个合数)时它将保持 False
。
>>> a = 0
>>> b = 500
>>> a += 1
>>> for i in range(a,b):
y = True
if(str(i) == str(i)[::-1]):
if(i>2):
for a in range(2,i):
if(i%a==0):
y = False
break
if y:
print(i)
3
5
7
11
101
131
151
181
191
313
353
373
383
As you can see, all of these are prime.您可以检查 wolframalpha 提供的素数列表,以确保没有遗漏任何回文素数。如果您想包括 2,请为此添加一个特例。
关于python - python中的回文素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22699625/