我正在参加一门Python编程课程,上周我们得到了一个作业问题,要求开发一个程序来生成所有小于或等于n的素数,其镜像也是素数,我不知道哪里出错了,请帮忙!
import math
def mirror_prime(n):
answer = True
# Test 0 and 1
if n==0 or n==1:
answer = False
# End if
# Test even numbers
if n != 2 and n%2==0:
answer= False
# End if
# Test if there is a proper odd divisor
for d in range (3, int(math.sqrt(n))+1, 2):
if n%d==0:
answer=False
# End if
# End for
#Reverse n
mirror_n = int(str(n)[::-1])
mirror_answer = True
# Test 0 and 1
if mirror_n==0 or mirror_n==1:
mirror_answer = False
# End if
def mirror_prime_generator(n):
for i in range(3, n+1):
print (mirror_prime(i))
我希望获得一个素数列表,这些素数的镜像也是素数,小于或等于 n。
当我在shell中输入mirror_prime_generator(n)时,得到的结果只是打印none,不管n是多少次,因此如果n是23,它将打印23次none。
return mirror_answer
返回答案。如果你没有返回任何值,那么默认值是None
,这就是你要打印的内容。 - larsrmirror_prime
返回True时,你才应该打印i
(数字)。 - larsrFalse
,然后没有必要进行其他测试。但是您可以执行所有测试并使用两个变量,但然后您应该返回answer and mirror_answer
,当且仅当answer
和mirror_answer
都为True
时才为True
。 - larsr