Emirp是素数,其逆转也是素数。对于 例如,17是素数,71是素数,因此17和71是ε。 编写一个打印出前N个emirps的程序,每行打5个。
计算第一个N emirp(素数,拼写向后)数字,其中 N是用户提供的正数作为输入。
实施细则
您需要使用2个功能(必须编写)。
isPrime(value)#如果value是素数,则返回true。相反 (value)#返回值的反转(即,如果值为35, 返回53)。您应该将这些函数与逻辑结合使用 在程序的主要部分,执行N的计算 根据下面的屏幕截图,将它们打印出来并打印出来。
您的课程大纲如下:
步骤1:向用户询问正数(输入验证)步骤2: 将变量Test初始化为2步骤3:找到的#emirps较少 比输入: 使用Test调用isPrime,然后使用reverse(Test)再次调用它。 如果两者都是素数,则发现打印和递增的emirp数。 Test ++提示 - 将数字反转,然后将其转换为字符串 扭转字符串。然后把它变成一个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
答案 0 :(得分:1)
您的代码存在很多问题。我改变了函数isPrime
。此处不需要count
,如果您希望test
增加1
每个循环使用test +=1
:
def isPrime(value):
test = 2
while(test < value):
if( value % test != 0):
test +=1
else:
return 0
return 1
有一种简单的方法可以通过使value
字符串颠倒顺序并将其转换为整数来反转数字:
def reverse(value):
return int(str(value)[::-1])
您必须将输入分配给i
。代码中的n
是常量5
。您必须在任何条件下将i
增加1,如果i
仅为emirp,则将计数增加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