Поиск числа, являющегося одновременно простым числом и палиндромом

#integer #compare #output #palindrome

#целое число #Сравнить #вывод #палиндром

Вопрос:

Я довольно новичок в Java. У меня есть код, в котором использование вводит число, а программа проверяет каждое число от 1 до n и выводит каждое число, которое является как простым числом, так и палиндромом. Однако мой код по какой-то причине ничего не выводит. В коде нет ошибок, поэтому я не уверен, что именно не так. Вот мой код:

 import java.util.*;
public class Lab5 
{
    public static void main (String[] args)  {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter a value:");  //Asking the user to input     the value n
        int n =scanner.nextInt();
        for (int y=2; y<=n; y  ) { //For every number from 2 to n
            prime(y);                     //the prime number is checked
            pal(y);                         //and so is the palindrome
            if ((prime(y)==true) amp;amp; (pal(y)==true)) { //if a number is both a prime AND a palindrome (both methods are being compared here)
                System.out.println(y);                          //it is printed out
            }
    }
    }
    public static boolean prime(int n) { //the method for finding the prime number
        int x = 2;
        while (n%x>0) {
        x =1;
        } if (x==n) {
            return true;
    } else {
            return false;
        }
    }

public static boolean pal(int n) { //the method for finding a palindrome
    int rev = 0;
    int rmd = 0;
    while (n>0) {
        rmd = n;
        rev = rev*10   rmd;
        n = n/10;
    } if (rev==n) {
        return true;
    } else {
        return false;
    }
}
 

}

Комментарии:

1. Я думаю, это поможет вам

2. для № 23, что должно быть выведено?

Ответ №1:

Ваш метод палиндрома возвращает неверный результат. Вы изменяете n , а затем сравниваете с обратным числом.

Сначала сохраните это значение, а затем сравните после цикла while

 int number = n;
If(rev == number)  return true;
 

Комментарии:

1. Спасибо за разъяснение!

Ответ №2:

Вы ошибаетесь в своей pal() функции. Ваша переменная n получает значение 0, и вы сравниваете ее с обратным значением no.

Присвойте эту переменную temp переменной, а затем сравните. Я внес некоторые изменения в ваш код, и он отлично работает.

 import java.util.*;
public class A 
{
    public static void main (String[] args)  {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter a value:");  //Asking the user to input     the value n
        int n =scanner.nextInt();
        for(int i=2;i<=n;i  ){
            if (prime(i) amp;amp; pal(i)) { //if a number is both a prime AND a palindrome (both methods are being compared here)
                System.out.println(i);                          //it is printed out
            }
        }
    }
    public static boolean prime(int n) { //the method for finding the prime number
        int x = 2;
        while (n%x>0) {
            x =1;
        } if (x==n) {
            return true;
        } else {
            return false;
        }
    }
    public static boolean pal(int n) { //the method for finding a palindrome
        int rev = 0;
            int rmd = 0;
        int temp = n;
            while (n>0) {
                rmd = n;
                rev = rev*10   rmd;
                n = n/10;
            }
        if (rev==temp){
                return true;
            }else{
                return false;
            }
    }
}
 

Вывод :

введите описание изображения здесь