mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-07 09:45:04 +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)
|
* [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)
|
* [WineProblem](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/dynamicprogramming/WineProblem.java)
|
||||||
* geometry
|
* 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)
|
* [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)
|
* [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)
|
* [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)
|
* [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)
|
* [WineProblemTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/WineProblemTest.java)
|
||||||
* geometry
|
* 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)
|
* [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)
|
* [GrahamScanTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/geometry/GrahamScanTest.java)
|
||||||
* greedyalgorithms
|
* greedyalgorithms
|
||||||
@ -1026,6 +1028,7 @@
|
|||||||
* [MedianOfMatrixtest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/misc/MedianOfMatrixtest.java)
|
* [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)
|
* [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)
|
* [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)
|
* [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)
|
* [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)
|
* [ThreeSumProblemTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/misc/ThreeSumProblemTest.java)
|
||||||
|
@ -1,51 +1,57 @@
|
|||||||
package com.thealgorithms.misc;
|
package com.thealgorithms.misc;
|
||||||
|
|
||||||
import java.util.Scanner;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public final class PalindromePrime {
|
public final class PalindromePrime {
|
||||||
private PalindromePrime() {
|
private PalindromePrime() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) { // Main function
|
public static boolean prime(int num) {
|
||||||
Scanner in = new Scanner(System.in);
|
if (num < 2) {
|
||||||
System.out.println("Enter the quantity of First Palindromic Primes you want");
|
return false; // Handle edge case for numbers < 2
|
||||||
int n = in.nextInt(); // Input of how many first palindromic prime we want
|
}
|
||||||
functioning(n); // calling function - functioning
|
if (num == 2) {
|
||||||
in.close();
|
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) {
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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;
|
int reverse = 0;
|
||||||
while (n != 0) {
|
while (n != 0) {
|
||||||
reverse *= 10;
|
reverse = reverse * 10 + (n % 10);
|
||||||
reverse += n % 10;
|
|
||||||
n /= 10;
|
n /= 10;
|
||||||
}
|
}
|
||||||
return reverse;
|
return reverse;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void functioning(int y) {
|
public static List<Integer> generatePalindromePrimes(int n) {
|
||||||
if (y == 0) {
|
List<Integer> palindromicPrimes = new ArrayList<>();
|
||||||
return;
|
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 count = 1;
|
||||||
int num = 3;
|
int num = 3;
|
||||||
while (count < y) {
|
|
||||||
if (num == reverse(num) && prime(num)) { // number is prime and it's reverse is same
|
while (count < n) {
|
||||||
count++; // counts check when to terminate while loop
|
if (num == reverse(num) && prime(num)) {
|
||||||
System.out.print(num + "\n"); // print the Palindromic Prime
|
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