-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAliquotSum.java
32 lines (27 loc) · 1003 Bytes
/
AliquotSum.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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
* example, the proper divisors of 15 (that is, the positive divisors of 15 that
* are not equal to 15) are 1, 3 and 5, so the aliquot sum of 15 is 9 i.e. (1 +
* 3 + 5). Wikipedia: https://en.wikipedia.org/wiki/Aliquot_sum
*/
public class AliquotSum {
/**
* Finds the aliquot sum of an integer number.
*
* @param number a positive integer
* @return aliquot sum of given {@code number}
*/
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;
}
}