mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-09 20:20:56 +08:00
Update PalindromicPrime.java
Method prime(num) uses only odd numbers from 3 to square root of num as divisors. In method functioning(y) we iterate over odd numbers as all even numbers (except of 2) are not prime. In method functioning(y) we check at first if the number is palindrome and then if it's prime, so we don't have to call the heavy prime() method for every number. The speed of searching palindromic primes is significantly increased.
This commit is contained in:
@ -1,15 +1,16 @@
|
|||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class PalindromePrime {
|
public class PalindromePrime {
|
||||||
|
|
||||||
public static void main(String[] args) { // Main funtion
|
public static void main(String[] args) { // Main funtion
|
||||||
Scanner in = new Scanner(System.in);
|
Scanner in = new Scanner(System.in);
|
||||||
System.out.println("Enter the quantity of First Palindromic Primes you want");
|
System.out.println("Enter the quantity of First Palindromic Primes you want");
|
||||||
int n = in.nextInt(); // Input of how mant first pallindromic prime we want
|
int n = in.nextInt(); // Input of how many first pallindromic prime we want
|
||||||
funtioning(n); // calling funtion - functioning
|
functioning(n); // calling function - functioning
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean prime(int num) { // checking if number is prime or not
|
public static boolean prime(int num) { // checking if number is prime or not
|
||||||
for (int divisor = 2; divisor <= num / 2; divisor++) {
|
for (int divisor = 3; divisor <= Math.sqrt(num); divisor += 2) {
|
||||||
if (num % divisor == 0) {
|
if (num % divisor == 0) {
|
||||||
return false; // false if not prime
|
return false; // false if not prime
|
||||||
}
|
}
|
||||||
@ -17,25 +18,27 @@ public class PalindromePrime {
|
|||||||
return true; // True if prime
|
return true; // True if prime
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int reverse(int n){ // Returns the reverse of the number
|
public static int reverse(int n) { // Returns the reverse of the number
|
||||||
int reverse = 0;
|
int reverse = 0;
|
||||||
while(n!=0){
|
while(n != 0) {
|
||||||
reverse = reverse * 10;
|
reverse *= 10;
|
||||||
reverse = reverse + n%10;
|
reverse += n%10;
|
||||||
n = n/10;
|
n /= 10;
|
||||||
}
|
}
|
||||||
return reverse;
|
return reverse;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void funtioning(int y){
|
public static void functioning(int y) {
|
||||||
int count =0;
|
if (y == 0) return;
|
||||||
int num = 2;
|
System.out.print(2 + "\n"); // print the first Palindromic Prime
|
||||||
while(count < y){
|
int count = 1;
|
||||||
if(prime(num) && num == reverse(num)){ // number is prime and it's reverse is same
|
int num = 3;
|
||||||
count++; // counts check when to terminate while loop
|
while(count < y) {
|
||||||
System.out.print(num + "\n"); // Print the Palindromic Prime
|
if(num == reverse(num) && prime(num)) { // number is prime and it's reverse is same
|
||||||
}
|
count++; // counts check when to terminate while loop
|
||||||
num++; // inrease iterator value by one
|
System.out.print(num + "\n"); // print the Palindromic Prime
|
||||||
}
|
}
|
||||||
|
num += 2; // inrease iterator value by two
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
Reference in New Issue
Block a user