【发布时间】:2016-01-18 10:58:48
【问题描述】:
回文素数是一个同时也是回文的素数。 例如,131 是素数,也是回文素数,313 和 757 也是。
我需要编写一个函数来显示第一个n 回文素数。
每行显示10个数字,并正确对齐数字,如下:
2 3 5 7 11 101 131 151 181 191
313 353 373 383 727 757 787 797 919 929
我的代码是:
def paliPrime(n):
a=0
b=n
a+=1
for i in range(a,b):
paliPrime=True
if str(i) == str(i)[::-1]:
if i>2:
for a in range(2,i):
if i%a==0:
paliPrime=False
break
if paliPrime:
print i
代码有效,但不是我想要的方式:
>>> paliPrime(10)
3
5
7
>>>
我想要的是一个显示前 n 个回文素数的函数。它应该每行显示 10 个数字并正确对齐数字。
【问题讨论】:
-
您是否考虑过您的代码在做什么以及为什么它没有产生您想要的输出?如果
b是您的输入,您认为for I in range(a,b)在做什么? -
@Lucia 您的代码可以很好地查找回文素数。您的问题是您没有检查在任何阶段都找到了多少回文素数。也许这是一个不错的起点?
-
使用indefinite primes generator 并在其上添加一个itertools 过滤器,只保留回文素数,然后使用
islice(filtered_primes,n)获得n第一个这样的素数。 -
@WillNess 你应该把它写成答案。
-
我很想得到你们中的一个人@Reti43 的回答,或者 WillNess 好的因果报应:)
标签: python function loops primes palindrome