2020-08-20 23:26:06 +08:00
|
|
|
package Maths;
|
|
|
|
|
|
|
|
/**
|
2020-10-24 18:23:28 +08:00
|
|
|
* 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
|
2020-08-20 23:26:06 +08:00
|
|
|
*/
|
|
|
|
public class AliquotSum {
|
2020-10-24 18:23:28 +08:00
|
|
|
public static void main(String[] args) {
|
|
|
|
assert aliquotSum(1) == 0;
|
|
|
|
assert aliquotSum(6) == 6;
|
|
|
|
assert aliquotSum(15) == 9;
|
|
|
|
assert aliquotSum(19) == 1;
|
|
|
|
}
|
2020-08-20 23:26:06 +08:00
|
|
|
|
2020-10-24 18:23:28 +08:00
|
|
|
/**
|
|
|
|
* 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;
|
|
|
|
}
|
2020-08-20 23:26:06 +08:00
|
|
|
}
|
2020-10-24 18:23:28 +08:00
|
|
|
return sum;
|
|
|
|
}
|
2020-08-20 23:26:06 +08:00
|
|
|
}
|