Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions DIRECTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -1026,6 +1026,7 @@
* [MedianOfMatrixtest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/misc/MedianOfMatrixtest.java)
* [MedianOfRunningArrayTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/misc/MedianOfRunningArrayTest.java)
* [MirrorOfMatrixTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/misc/MirrorOfMatrixTest.java)
* [PalindromePrimeTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/misc/PalindromePrimeTest.java)
* [PalindromeSinglyLinkedListTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/misc/PalindromeSinglyLinkedListTest.java)
* [RangeInSortedArrayTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/misc/RangeInSortedArrayTest.java)
* [ThreeSumProblemTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/misc/ThreeSumProblemTest.java)
Expand Down
52 changes: 29 additions & 23 deletions src/main/java/com/thealgorithms/misc/PalindromePrime.java
Original file line number Diff line number Diff line change
@@ -1,51 +1,57 @@
package com.thealgorithms.misc;

import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;

public final class PalindromePrime {
private PalindromePrime() {
}

public static void main(String[] args) { // Main function
Scanner in = new Scanner(System.in);
System.out.println("Enter the quantity of First Palindromic Primes you want");
int n = in.nextInt(); // Input of how many first palindromic prime we want
functioning(n); // calling function - functioning
in.close();
}
public static boolean prime(int num) {
if (num < 2) {
return false; // Handle edge case for numbers < 2
}
if (num == 2) {
return true; // 2 is prime
}
if (num % 2 == 0) {
return false; // Even numbers > 2 are not prime
}

public static boolean prime(int num) { // checking if number is prime or not
for (int divisor = 3; divisor <= Math.sqrt(num); divisor += 2) {
if (num % divisor == 0) {
return false; // false if not prime
return false;
}
}
return true; // True if prime
return true;
}

public static int reverse(int n) { // Returns the reverse of the number
public static int reverse(int n) {
int reverse = 0;
while (n != 0) {
reverse *= 10;
reverse += n % 10;
reverse = reverse * 10 + (n % 10);
n /= 10;
}
return reverse;
}

public static void functioning(int y) {
if (y == 0) {
return;
public static List<Integer> generatePalindromePrimes(int n) {
List<Integer> palindromicPrimes = new ArrayList<>();
if (n <= 0) {
return palindromicPrimes; // Handle case for 0 or negative input
}
System.out.print(2 + "\n"); // print the first Palindromic Prime

palindromicPrimes.add(2); // 2 is the first palindromic prime
int count = 1;
int num = 3;
while (count < y) {
if (num == reverse(num) && prime(num)) { // number is prime and it's reverse is same
count++; // counts check when to terminate while loop
System.out.print(num + "\n"); // print the Palindromic Prime

while (count < n) {
if (num == reverse(num) && prime(num)) {
palindromicPrimes.add(num);
count++;
}
num += 2; // inrease iterator value by two
num += 2; // Skip even numbers
}
return palindromicPrimes;
}
}
53 changes: 53 additions & 0 deletions src/test/java/com/thealgorithms/misc/PalindromePrimeTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.thealgorithms.misc;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.util.List;
import org.junit.jupiter.api.Test;

public class PalindromePrimeTest {

@Test
public void testPrimeWithPrimeNumbers() {
assertTrue(PalindromePrime.prime(2), "2 should be prime");
assertTrue(PalindromePrime.prime(3), "3 should be prime");
assertTrue(PalindromePrime.prime(5), "5 should be prime");
assertTrue(PalindromePrime.prime(11), "11 should be prime");
}

@Test
public void testPrimeWithNonPrimeNumbers() {
assertFalse(PalindromePrime.prime(1), "1 is not prime");
assertFalse(PalindromePrime.prime(4), "4 is not prime");
assertFalse(PalindromePrime.prime(9), "9 is not prime");
assertFalse(PalindromePrime.prime(15), "15 is not prime");
}

@Test
public void testReverse() {
assertEquals(123, PalindromePrime.reverse(321), "Reverse of 321 should be 123");
assertEquals(7, PalindromePrime.reverse(7), "Reverse of 7 should be 7");
assertEquals(1221, PalindromePrime.reverse(1221), "Reverse of 1221 should be 1221");
}

@Test
public void testGeneratePalindromePrimes() {
List<Integer> result = PalindromePrime.generatePalindromePrimes(5);
List<Integer> expected = List.of(2, 3, 5, 7, 11);
assertEquals(expected, result, "The first 5 palindromic primes should be [2, 3, 5, 7, 11]");
}

@Test
public void testGeneratePalindromePrimesWithZero() {
List<Integer> result = PalindromePrime.generatePalindromePrimes(0);
assertTrue(result.isEmpty(), "Generating 0 palindromic primes should return an empty list");
}

@Test
public void testGeneratePalindromePrimesWithNegativeInput() {
List<Integer> result = PalindromePrime.generatePalindromePrimes(-5);
assertTrue(result.isEmpty(), "Generating a negative number of palindromic primes should return an empty list");
}
}