| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // 1390. Four Divisors
- function sumFourDivisors(nums: number[]): number {
- let divisorsCache = new Map<number, number[]>()
- 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()
|