如何打印所有回文数?

问题描述 投票:0回答:2

这里是Java新手。我已经找到了所有素数,直到找到一个特定的数字(用户给出了),但是我现在找到了回文数。我尝试了一些方法,但似乎都弄乱了主要部分。

java for-loop if-statement primes palindrome
2个回答
0
投票

所以似乎有三种方法

((1)将数字转换为字符串,然后通过库调用将其反转。 (慢)

(2)在数字和mod 10数学上使用一些循环以得出结果,然后检查与输入是否相等。 (快速)

(3)如果您有一个少于N的所有素数的列表,请写回文数generator以使所有回文数都小于N,然后进行比较。 (据称非常快)

((注意:使用集合而不是列表,尤其是具有快速查找功能的集合,可以告诉您集合中是否存在值)]


对于数学版本,这很容易(假设以10为底)

取输入数字i并复制n。创建输出编号o。

[循环]

  • 让x = n mod 10
  • 将n除以10。
  • o乘以十
  • 将x添加到o
  • 重复直到n为零。

[结束循环]

如果i == o,则为回文型


0
投票

检查回文并不困难。比查找数字是否为质数要容易。您可以使用以下逻辑来检查素数是否为回文数。

 boolean isPalindrome(int num) {
    int reversed = 0, remainder, original;
    original = num;
    while (num != 0) {
        remainder = num % 10;
        reversed = reversed * 10 + remainder;
        num /= 10;
    }
    return original == reversed;
}

由于您只想使用一种方法,因此可以将此逻辑放在isPalin方法内,而不是返回true。如果该数字是素数,则可以进一步检查它是否是回文。

static boolean isPalin(int primenumcheck) {
    int leftover;
    for (int i = 2; i <= primenumcheck / 2; i++) {
        leftover = primenumcheck % i;
        //if remainder is 0 than numberToCheckber is not prime and break 
   loop. Elese continue loop
        if (leftover == 0) {
            return false;
        }
    }
    // logic to check Palindromic prime
    int reversed = 0, remainder, original;
    original = primenumcheck;
    while (primenumcheck != 0) {
        remainder = primenumcheck % 10;
        reversed = reversed * 10 + remainder;
        primenumcheck /= 10;
    }
    return original == reversed;
}
© www.soinside.com 2019 - 2024. All rights reserved.