【发布时间】:2017-05-10 13:52:51
【问题描述】:
Emirp 是一个素数,其反转也是一个素数。为了 例如,17 是素数,71 是素数,所以 17 和 71 是 emirps。 编写一个程序,打印出前 N 个 emirp,每行五个。
计算前 N 个 emirp(质数,倒写)数,其中 N 是用户作为输入提供的正数。
实现细节
您需要使用 2 个函数(必须编写)。
isPrime(value) # 如果 value 是素数,则返回 true。逆转 (value) # 返回值的倒数(即如果值为 35, 返回 53)。您应该将这些功能与逻辑结合使用 在程序的主要部分,执行 N 的计算 emirps 并根据下面的截图打印出来。
您的程序的总体大纲如下:
第 1 步:向用户询问正数(输入验证) 第 2 步: 将变量 Test 初始化为 2 第 3 步:而 # emirps found is less 比输入: 使用 Test 调用 isPrime,然后使用 reverse(Test) 再次调用它。 如果两者都是素数,则打印并增加找到的 emirp 数。 Test++ Hint - 反转数字,把它变成一个字符串,然后 反转字符串。然后把它转回int!
我的代码:
n = 0
count = 0
i = 1
def isPrime(value):
test = 2
count = 0
while(test < value):
if( value % test == 0):
count+=count
test+=test
if(count == 0):
return 1
else:
return 0
def reverse(value):
reverse = 0
while(value > 0):
reverse = reverse * 10 + (value % 10)
value = value / 10
return reverse
n = float(input("Please enter a positive number: "))
while(count < n):
i+=i;
if(isPrime(i)):
if(isPrime(reverse(i))):
print("i" + "\n")
count+=count
if((count % (5)) == 0 ):
print("\n")
哪里出错了?
已更新代码但仍未运行:
n = 0
count = 0
i = 1
def isPrime(value):
test = 2
while(test < value):
if( value % test != 0):
test +=1
else:
return 0
def reverse(value):
return int(str(value)[::-1])
i = int(input("Please enter a positive number: "))
count = 0
while(count < 5):
if(isPrime(i)):
if(isPrime(reverse(i))):
print(str(i) + "\n")
count += 1
i += 1
else:
i += 1
else:
i +=1
【问题讨论】:
-
当您厌倦了自己的作业时,这里不是您倾倒作业的地方。
-
你怎么知道它没有运行?请提供更多信息
-
您更新后的 isPrime 永远不会返回 1。您遗漏了最后一个返回语句。
-
我更新并运行代码,但是当我输入“1”时,我收到 1、3、5,7。代码应打印前 1 个 emrip。我不确定它在打印什么
-
它从 imput int 打印前五个 emirp。我以为你想生成这个。如果您只想打印第一个 emirp,您可以轻松调整代码。
标签: python