Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
33 lines (29 loc) · 1.04 KB

File metadata and controls

33 lines (29 loc) · 1.04 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
33
import { aliquotSum } from '../Maths/AliquotSum.js'
/**
* Problem 21 - Amicable numbers
*
* @see {@link https://projecteuler.net/problem=21}
*
* Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n).
* If d(a) = b and d(b) = a, where a != b, then a and b are an amicable pair and each of a and b are called amicable numbers.
* For example, the proper divisors of 220 are 1,2,4,5,10,11,20,22,44,55 and 110; therefore d(220) = 284.
* The proper divisors of 284 are 1,2,4,71 and 142; so d(284) = 220.
* Evaluate the sum of all amicable numbers under 10000
*
* @author PraneethJain
*/
function problem21(n) {
if (n < 2) {
throw new Error('Invalid Input')
}
let result = 0
for (let a = 2; a < n; ++a) {
const b = aliquotSum(a) // Sum of all proper divisors of a
// Check if b > a to ensure each pair isn't counted twice, and check if sum of proper divisors of b is equal to a
if (b > a && aliquotSum(b) === a) {
result += a + b
}
}
return result
}
export { problem21 }
Morty Proxy This is a proxified and sanitized view of the page, visit original site.