diff --git a/DIRECTORY.md b/DIRECTORY.md index 67bf6d19..c90502c7 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -117,6 +117,7 @@ * [AbsoluteMax](https://github.com/TheAlgorithms/Java/blob/master/Maths/AbsoluteMax.java) * [AbsoluteMin](https://github.com/TheAlgorithms/Java/blob/master/Maths/AbsoluteMin.java) * [AbsoluteValue](https://github.com/TheAlgorithms/Java/blob/master/Maths/AbsoluteValue.java) + * [AliquotSum](https://github.com/TheAlgorithms/Java/blob/master/Maths/AliquotSum.java) * [AmicableNumber](https://github.com/TheAlgorithms/Java/blob/master/Maths/AmicableNumber.java) * [Area](https://github.com/TheAlgorithms/Java/blob/master/Maths/Area.java) * [Average](https://github.com/TheAlgorithms/Java/blob/master/Maths/Average.java) @@ -134,6 +135,7 @@ * [GCDRecursion](https://github.com/TheAlgorithms/Java/blob/master/Maths/GCDRecursion.java) * [LucasSeries](https://github.com/TheAlgorithms/Java/blob/master/Maths/LucasSeries.java) * [MaxValue](https://github.com/TheAlgorithms/Java/blob/master/Maths/MaxValue.java) + * [Median](https://github.com/TheAlgorithms/Java/blob/master/Maths/Median.java) * [MinValue](https://github.com/TheAlgorithms/Java/blob/master/Maths/MinValue.java) * [Mode](https://github.com/TheAlgorithms/Java/blob/master/Maths/Mode.java) * [NumberOfDigits](https://github.com/TheAlgorithms/Java/blob/master/Maths/NumberOfDigits.java) diff --git a/Maths/AliquotSum.java b/Maths/AliquotSum.java new file mode 100644 index 00000000..28dbca41 --- /dev/null +++ b/Maths/AliquotSum.java @@ -0,0 +1,35 @@ +package Maths; + +/** + *

+ * 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 { + 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 + * + * @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; + } +} diff --git a/Maths/Median.java b/Maths/Median.java new file mode 100644 index 00000000..84953583 --- /dev/null +++ b/Maths/Median.java @@ -0,0 +1,28 @@ +package Maths; + +import java.util.Arrays; + +/** + * Wikipedia: https://en.wikipedia.org/wiki/Median + */ +public class Median { + public static void main(String[] args) { + assert median(new int[]{0}) == 0; + assert median(new int[]{1, 2}) == 1.5; + assert median(new int[]{4, 1, 3, 2}) == 2.5; + assert median(new int[]{1, 3, 3, 6, 7, 8, 9}) == 6; + assert median(new int[]{1, 2, 3, 4, 5, 6, 8, 9}) == 4.5; + } + + /** + * Calculate average median + * + * @param values number series + * @return median of given {@code values} + */ + public static double median(int[] values) { + Arrays.sort(values); + int length = values.length; + return length % 2 == 0 ? (values[length / 2] + values[length / 2 - 1]) / 2.0 : values[length / 2]; + } +}