这里是Java新手。我已经找到了所有素数,直到找到一个特定的数字(用户给出了),但是我现在找到了回文数。我尝试了一些方法,但似乎都弄乱了主要部分。
所以似乎有三种方法
((1)将数字转换为字符串,然后通过库调用将其反转。 (慢)
(2)在数字和mod 10数学上使用一些循环以得出结果,然后检查与输入是否相等。 (快速)
(3)如果您有一个少于N的所有素数的列表,请写回文数generator以使所有回文数都小于N,然后进行比较。 (据称非常快)
((注意:使用集合而不是列表,尤其是具有快速查找功能的集合,可以告诉您集合中是否存在值)]
对于数学版本,这很容易(假设以10为底)
取输入数字i并复制n。创建输出编号o。
[循环]
[结束循环]
如果i == o,则为回文型
检查回文并不困难。比查找数字是否为质数要容易。您可以使用以下逻辑来检查素数是否为回文数。
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;
}