File tree Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Original file line number Diff line number Diff line change 1+ /*
2+ 'In number theory, friendly numbers are two or more natural numbers with a common abundancy index, the
3+ ratio between the sum of divisors of a number and the number itself.'
4+ Source: https://en.wikipedia.org/wiki/Friendly_number
5+ See also: https://mathworld.wolfram.com/FriendlyNumber.html#:~:text=The%20numbers%20known%20to%20be,numbers%20have%20a%20positive%20density.
6+ */
7+
8+ export const FriendlyNumbers = ( firstNumber , secondNumber ) => {
9+ // input: two integers
10+ // output: true if the two integers are friendly numbers, false if they are not friendly numbers
11+
12+ // First, check that the parameters are valid
13+ if ( ! Number . isInteger ( firstNumber ) || ! Number . isInteger ( secondNumber ) || firstNumber === 0 || secondNumber === 0 || firstNumber === secondNumber ) {
14+ throw new Error ( 'The two parameters must be distinct, non-null integers' )
15+ }
16+
17+ return abundancyIndex ( firstNumber ) === abundancyIndex ( secondNumber )
18+ }
19+
20+ function abundancyIndex ( number ) {
21+ return sumDivisors ( number ) / number
22+ }
23+
24+ function sumDivisors ( number ) {
25+ let runningSumDivisors = number
26+ for ( let i = 0 ; i < number / 2 ; i ++ ) {
27+ if ( Number . isInteger ( number / i ) ) {
28+ runningSumDivisors += i
29+ }
30+ }
31+ return runningSumDivisors
32+ }
You can’t perform that action at this time.
0 commit comments