mirror of
https://github.com/TheAlgorithms/Java.git
synced 2026-03-13 08:40:43 +08:00
Add tests, remove main in PalindromePrime (#5773)
This commit is contained in:
@@ -304,6 +304,7 @@
|
||||
* [WildcardMatching](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/dynamicprogramming/WildcardMatching.java)
|
||||
* [WineProblem](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/dynamicprogramming/WineProblem.java)
|
||||
* geometry
|
||||
* [BresenhamLine](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/geometry/BresenhamLine.java)
|
||||
* [ConvexHull](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/geometry/ConvexHull.java)
|
||||
* [GrahamScan](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/geometry/GrahamScan.java)
|
||||
* [Point](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/geometry/Point.java)
|
||||
@@ -902,6 +903,7 @@
|
||||
* [WildcardMatchingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/WildcardMatchingTest.java)
|
||||
* [WineProblemTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/WineProblemTest.java)
|
||||
* geometry
|
||||
* [BresenhamLineTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/geometry/BresenhamLineTest.java)
|
||||
* [ConvexHullTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/geometry/ConvexHullTest.java)
|
||||
* [GrahamScanTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/geometry/GrahamScanTest.java)
|
||||
* greedyalgorithms
|
||||
@@ -1026,6 +1028,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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user