From 92b647c352d8e7c34a559b50ec73c405c2abd96f Mon Sep 17 00:00:00 2001 From: TurinTech Bot Date: Wed, 22 Jan 2025 12:28:31 +0000 Subject: [PATCH] Artemis Changes --- app/src/main/java/algorithms/Primes.java | 37 +++++++++++++++++++----- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/algorithms/Primes.java b/app/src/main/java/algorithms/Primes.java index bfa903e..dbfa309 100644 --- a/app/src/main/java/algorithms/Primes.java +++ b/app/src/main/java/algorithms/Primes.java @@ -12,7 +12,13 @@ public static boolean IsPrime(int n) { if (n < 2) { return false; } - for (int i = 2; i * i <= n; i++) { // Optimized loop condition + if (n == 2) { + return true; + } + if (n % 2 == 0) { + return false; + } + for (int i = 3; i * i <= n; i += 2) { // Only check odd numbers if (n % i == 0) { return false; } @@ -28,9 +34,13 @@ public static boolean IsPrime(int n) { */ public static int SumPrimes(int n) { int sum = 0; - for (int i = 0; i < n; i++) { + if (n < 2) { + return 0; + } + sum += 2; // Include 2 as the first prime + for (int i = 3; i < n; i += 2) { // Only check odd numbers if (IsPrime(i)) { - sum = sum + i; + sum += i; } } return sum; @@ -44,11 +54,22 @@ public static int SumPrimes(int n) { */ public static Vector PrimeFactors(int n) { Vector ret = new Vector(); + + // Handle 2 separately + while (n % 2 == 0) { + ret.add(2); + n /= 2; + } - for (int i = 2; i * i <= n; i++) { // Optimized loop condition - while (n % i == 0 && IsPrime(i)) { // Optimized to handle repeated factors - ret.add(i); - n /= i; // Reduce n to avoid redundant checks. + // Check odd numbers only + for (int i = 3; i * i <= n; i += 2) { + while (n % i == 0) { + if (IsPrime(i)) { + ret.add(i); + n /= i; + } else { + break; + } } } if (n > 1) { // Add any remaining prime factor. @@ -56,4 +77,4 @@ public static Vector PrimeFactors(int n) { } return ret; } -} +} \ No newline at end of file