﻿ Finding a number that is both a prime number and a palindrome

# Finding a number that is both a prime number and a palindrome

I' fairly 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) && (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%10; rev = rev*10 + rmd; n = n/10; } if (rev==n) { return true; } else { return false; } } ew to java. I have code in which a use inputs a number and the program check every number from 1 to n and outputs every number that is both a prime number and a palindrome. However my code doesn't output anything for some reason. There are no errors in the code, so I'm not sure what's wrong exactly. Here's my code:

``n``

}

0

## Ответов: 2

Your palindrome method is returning wrong result. You are modifying `n` and after then comparing with reversed number.

First save that value then compare after while loop

``pal()``

You are mistaking in your `temp` function. Your n variable is getting 0 and you are comparing it to reverse no.

Assign that variable to a `temp` variable and then compare. I made some changes to your code and it working great.

``````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) && 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%10;
rev = rev*10 + rmd;
n = n/10;
}
if (rev==temp){
return true;
}else{
return false;
}
}
}
``````

Output : integer,compare,output,palindrome,