Code refactor for AliquotSum improvements (#3027)

Fix #3026
This commit is contained in:
Cristiano Jesus 2022-04-21 02:31:55 +01:00 committed by GitHub
parent 4b15b2c021
commit 9f7613b467
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 16 deletions

View File

@ -1,5 +1,7 @@
package com.thealgorithms.maths;
import java.util.stream.IntStream;
/**
* In number theory, the aliquot sum s(n) of a positive integer n is the sum of
* all proper divisors of n, that is, all divisors of n other than n itself. For
@ -9,26 +11,22 @@ package com.thealgorithms.maths;
*/
public class AliquotSum {
public static void main(String[] args) {
assert aliquotSum(1) == 0;
assert aliquotSum(6) == 6;
assert aliquotSum(15) == 9;
assert aliquotSum(19) == 1;
}
/**
* Finds the aliquot sum of an integer number
* Finds the aliquot sum of an integer number.
*
* @param number a positive integer
* @return aliquot sum of given {@code number}
*/
public static int aliquotSum(int number) {
int sum = 0;
for (int i = 1, limit = number / 2; i <= limit; ++i) {
if (number % i == 0) {
sum += i;
}
}
return sum;
public static int getAliquotValue(int number) {
var sumWrapper = new Object() {
int value = 0;
};
IntStream.iterate(1, i -> ++i)
.limit(number / 2)
.filter(i -> number % i == 0)
.forEach(i -> sumWrapper.value += i);
return sumWrapper.value;
}
}

View File

@ -0,0 +1,16 @@
package com.thealgorithms.maths;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class AliquotSumTest {
@Test
void testGetMaxValue() {
assertEquals(0, AliquotSum.getAliquotValue(1));
assertEquals(6, AliquotSum.getAliquotValue(6));
assertEquals(9, AliquotSum.getAliquotValue(15));
assertEquals(1, AliquotSum.getAliquotValue(19));
}
}