diff --git a/src/main/java/com/thealgorithms/maths/PrimeFactorization.java b/src/main/java/com/thealgorithms/maths/PrimeFactorization.java index ca6f12637..44c82afb0 100644 --- a/src/main/java/com/thealgorithms/maths/PrimeFactorization.java +++ b/src/main/java/com/thealgorithms/maths/PrimeFactorization.java @@ -1,35 +1,39 @@ package com.thealgorithms.maths; -import java.util.Scanner; +/* + * Authors: + * (1) Aitor Fidalgo Sánchez (https://github.com/aitorfi) + * (2) Akshay Dubey (https://github.com/itsAkshayDubey) +*/ + +import java.util.ArrayList; +import java.util.List; public class PrimeFactorization { - public static void main(String[] args) { - System.out.println("## all prime factors ##"); - Scanner scanner = new Scanner(System.in); - System.out.print("Enter a number: "); - int n = scanner.nextInt(); - System.out.print(("printing factors of " + n + " : ")); - pfactors(n); - scanner.close(); - } + public static List pfactors(int n) { + + List primeFactors = new ArrayList<>(); - public static void pfactors(int n) { + if (n == 0) { + return primeFactors; + } - while (n % 2 == 0) { - System.out.print(2 + " "); - n /= 2; - } + while (n % 2 == 0) { + primeFactors.add(2); + n /= 2; + } - for (int i = 3; i <= Math.sqrt(n); i += 2) { - while (n % i == 0) { - System.out.print(i + " "); - n /= i; - } - } + for (int i = 3; i <= Math.sqrt(n); i += 2) { + while (n % i == 0) { + primeFactors.add(i); + n /= i; + } + } - if (n > 2) { - System.out.print(n); - } - } + if (n > 2) { + primeFactors.add(n); + } + return primeFactors; + } } diff --git a/src/test/java/com/thealgorithms/maths/PrimeFactorizationTest.java b/src/test/java/com/thealgorithms/maths/PrimeFactorizationTest.java new file mode 100644 index 000000000..3f21a515f --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/PrimeFactorizationTest.java @@ -0,0 +1,36 @@ +package com.thealgorithms.maths; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.List; + +import org.junit.jupiter.api.Test; + +class PrimeFactorizationTest { + + @Test + void testpFactorsMustReturnEmptyList() { + //given + int n = 0; + + //then + assertTrue(PrimeFactorization.pfactors(n).isEmpty()); + } + + @Test + void testpFactorsMustReturnNonEmptyList() { + //given + int n = 198; + int expectedListSize = 4; + + //when + List actualResultList = PrimeFactorization.pfactors(n); + + //then + assertEquals(expectedListSize, actualResultList.size()); + assertEquals(2, actualResultList.get(0)); + assertEquals(3, actualResultList.get(1)); + assertEquals(3, actualResultList.get(2)); + assertEquals(11, actualResultList.get(3)); + } +}