-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathintegers-recreation-one.js
More file actions
38 lines (31 loc) · 1.45 KB
/
integers-recreation-one.js
File metadata and controls
38 lines (31 loc) · 1.45 KB
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
34
35
36
37
38
/*
1, 246, 2, 123, 3, 82, 6, 41 are the divisors of number 246. Squaring these divisors we get: 1, 60516, 4, 15129, 9, 6724, 36, 1681. The sum of these squares is 84100 which is 290 * 290.
Task
Find all integers between m and n (m and n integers with 1 <= m <= n) such that the sum of their squared divisors is itself a square.
We will return an array of subarrays or of tuples (in C an array of Pair) or a string. The subarrays (or tuples or Pairs) will have two elements: first the number the squared divisors of which is a square and then the sum of the squared divisors.
Example:
list_squared(1, 250) --> [[1, 1], [42, 2500], [246, 84100]]
list_squared(42, 250) --> [[42, 2500], [246, 84100]]
The form of the examples may change according to the language, see "Sample Tests".
Note
In Fortran - as in any other language - the returned string is not permitted to contain any redundant trailing whitespace: you can use dynamically allocated character strings.
*/
function listSquared(m, n) {
let dividers = []
let result = []
let reduced
for(let i = m; i < n; i++){
dividers = []
for (let j = 1; j <= i; j++){
if (i % j === 0 ){
dividers.push(j)
}
}
dividers.forEach((x, i) => dividers[i] = Math.pow(x, 2))
if (Math.sqrt(dividers.reduce((a, b) => a + b, 0)) % 1 == 0){
reduced = dividers.reduce((a, b) => a + b, 0)
result.push([i, reduced])
}
}
return result
}