【问题标题】:How do I write a Python recursion algorithm that looks for palindromic primes between two values (from user)?如何编写 Python 递归算法来查找两个值(来自用户)之间的回文素数?
【发布时间】:2019-09-13 14:00:45
【问题描述】:

回文素数是一个素数,即使你颠倒数字也可以读取相同的数字,例如11、101、121、383、3443。 我想编写一个程序,要求用户输入两个数字 a 和 b,程序必须递归地找到 a 和 b 之间的所有回文素数并将它们打印出来。

我有一个函数 palindrome,它可以在将素数转换为字符串后递归地反转素数。我正在努力创建一个递归函数来检查一个数字是否也是素数和回文,它还必须保存这些值并将它们打印出来。

def palindrome(seq):
    if seq == '':
        return seq
    else:
        return palindrome_reverse(seq[1:]) + seq[0]

这是程序的预期输出:

Enter first number: 50
Enter second number: 150
The palindromic primes between 50 and 150 are:
101
121
131

【问题讨论】:

标签: python recursion


【解决方案1】:

我来这里是为了递归部分:-)

我不知道python,所以我将分享一个java中的解决方案。 而且由于primalty不是递归问题,我让你在算法中引入它;-)

这是我的解决方案:

package palyndromic;
public class Palindrome {   
    static boolean isPalindrome(String number)
    {
        if(number.length() < 2)
        {   // Your string is either empty or one character long. ==> Palindrome
            return true;
        }
        else if(number.length() == 2)
        {   // if your number is 2 char only, it is a palindrome when both characters are the same
            return number.charAt(0) == number.charAt(1);
        }
        else
        {
            // If your number is more than 2 chars, the bounds must be identical and the inner number must be a palindrome too.
            boolean boundAreSame = number.charAt(0) == number.charAt(number.length()-1);
            boolean innerStringIsPalindrome = isPalindrome(number.substring(1, number.length()-1)); 
            return boundAreSame && innerStringIsPalindrome;
        }
    }
    static boolean isPrime(int number)
    {
        return true; // Implement it as you wish
    }

    public static void main(String[] args) {

            for (int i = 50; i < 150; i++) {
                if(isPalindrome(Integer.toString(i)) && isPrime(i))
                    System.out.println(i + " is a prime palindrome");
            }           
    }

}

输出:

55 is a prime palindrome
66 is a prime palindrome
77 is a prime palindrome
88 is a prime palindrome
99 is a prime palindrome
101 is a prime palindrome
111 is a prime palindrome
121 is a prime palindrome
131 is a prime palindrome
141 is a prime palindrome

欢迎使用 StackOverflow =)

【讨论】:

    猜你喜欢
    • 2016-11-03
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 2019-10-02
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    相关资源
    最近更新 更多