-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcountDivisors.js
49 lines (48 loc) · 1.1 KB
/
countDivisors.js
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
39
40
41
42
43
44
45
46
47
48
49
function solve(A) {
const booleanA = new Array(Math.max(...A)+1).fill(true)
booleanA[0] = false
booleanA[1] = false
for(let i=2;i*i<booleanA.length; i++) {
if(booleanA[i] === true) {
for(j=i; i*j< booleanA.length; j++) {
booleanA[i*j] = false
}
}
}
// console.log(booleanA);
let prime = []
for(let i=0; i<booleanA.length; i++) {
if(booleanA[i] === true) {
prime.push(i)
}
}
// console.log(prime)
let divisorA = []
for(let i=0;i< A.length; i++) {
if(prime.indexOf(A[i]) > -1) {
// prime
divisorA.push(2)
} else {
let count = 1
let value = A[i]
if(value === Math.max(...A) && value > prime[prime.length-1]) {
count++
}
for(let j=0; j < prime.length; j++) {
while(value % prime[j] === 0) {
value = Math.floor(value / prime[j])
count++
}
if(value === 1) {
divisorA.push(count)
break
}
}
}
}
return divisorA
}
const A = [2,3,4,5]
const B = [8,9,10]
console.log(solve(A), [2, 2, 3, 2])
console.log(solve(B), [4, 3, 4])