用python找到emrips,我做错了什么?

时间:2016-12-26 00:26:57

标签: python

  

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

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