// 1390. Four Divisors function sumFourDivisors(nums: number[]): number { let divisorsCache = new Map() function divisors(num: number): number[] { if ( divisorsCache.has(num) ) { return divisorsCache.get(num) } let ret: number[] = [1, num] const limit: number = num-1 for ( let i = 2 ; i < limit; ++i ) { if ( num % i == 0 ) { ret.push(i); if ( ret.length > 4 ) { break; } } } divisorsCache.set(num, ret); return ret; } let ret: number = 0; let nums_size = nums.length; for ( let i = 0; i < nums_size; ++i ) { const divs: number[] = divisors(nums[i]); if ( divs.length == 4 ) { ret += divs[0] + divs[1] + divs[2] + divs[3]; } } return ret; }; function main() { function r(nums: number[], exp: number) { console.log(`sumFourDivisors([${nums}]) = ${sumFourDivisors(nums)} | exp: ${exp}`) } r([21,4,7], 32) r([21,21], 64) r([1,2,3,4,5], 0) r([1,2,3,4,5,6,7,8,9,10], 45) } main()