Как распечатать все номера палиндроми c? - PullRequest
0 голосов
/ 26 февраля 2020

новичок Java здесь. Я закончил поиск всех простых чисел до определенного числа (пользователь дает), но сейчас я нахожу palindromi c numbe. Я попробовал несколько способов, но все, кажется, испортили основную часть.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Таким образом, кажется, что есть три метода

(1) Преобразовать число в строку, а затем сделать обратный вызов из библиотеки. (Медленно)

(2) Используйте некоторое l oop над числом и mod 10 math, чтобы получить результат, который затем вы проверяете на равенство с входными данными. (Быстрый)

(3) Если у вас есть список всех простых чисел, меньших N, напишите палиндром generator , чтобы все числа палиндромов c были меньше N, а затем сравните списки. (Предположительно, очень быстро)

(Примечание: используйте набор вместо списка, особенно с быстрым поиском, чтобы сказать вам, существует ли значение в наборе)


Для математическая версия, это легко (при условии, что база 10)

Возьмите введенное число i и сделайте копию n. Создайте выходное число o.

[loop]

  • Пусть x = n mod 10
  • Разделите n на 10.
  • Умножьте o на десять
  • Добавить x к o
  • Повторять до тех пор, пока n не станет нулем.

[конец цикла]

, если i == o, то это palindromi c

0 голосов
/ 26 февраля 2020

Проверка палиндрома не составляет труда. Это проще, чем найти, является ли число простым или нет. Вы можете использовать следующую логику c, чтобы проверить, является ли простое число палиндромом или нет.

 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;
}

Поскольку вы хотите использовать только один метод, эту логику c можно поместить в метод isPalin в место возвращения истины. Если число простое, вы можете проверить, является ли оно палиндроми c или нет.

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;
}
...