【发布时间】:2016-07-15 18:23:23
【问题描述】:
我正在尝试生成两个整数之间的素数回文(由用户给出),但根本不知道我哪里出错了。请问有人能解释一下吗?
这是我目前所得到的:
#Palindrome test
def palindrome(num):
str(num) == str(num)[::-1]
#Prime test (excl. 3, 5 & 7 because not palindrome)
def prime(num):
abs(num)%2 != 0
abs(num)%3 != 0
abs(num)%5 != 0
abs(num)%7 != 0
N = int(input("Enter the start point N: "))
M = int(input("Enter the end point M: "))
for x in range(N, M):
if palindrome(x) and prime(x):
print(x)
好的,正如所指出的 - 上面的代码中存在不止一个问题。我再次尝试并想出了这个(下图),它可以打印出所有的回文,但也包括非素数。我哪里错了?
N = int(input("Enter the start point N: "))
M = int(input("Enter the end point M: "))
def palindrome(num):
return str(num) == str(num)[::-1]
def prime(x):
for x in range(N, M+1):
for y in range(2, x):
if x%y != 0:
return True
for z in range(N, M):
if palindrome(z) and prime(z):
print(z)
感谢到目前为止的所有反馈!
【问题讨论】:
-
你必须让你的函数返回一个布尔值
True/False。目前,它什么也不返回,就像返回None,所以if palindrome(x) and prime(x)始终是False。 -
与您的
palindrome函数相同。你想拥有return str(num) == str(num)[::-1]。 -
为什么说 3,5,7 不是回文呢?在通常对回文的理解中,它们肯定是。
-
一旦你把
return放进去,你的palindrome函数没问题,但是你的prime函数需要认真注意。
标签: python python-3.x palindrome