1390.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // 1390. Four Divisors
  2. function sumFourDivisors(nums: number[]): number {
  3. let divisorsCache = new Map<number, number[]>()
  4. function divisors(num: number): number[] {
  5. if ( divisorsCache.has(num) ) { return divisorsCache.get(num) }
  6. let ret: number[] = [1, num]
  7. const limit: number = num-1
  8. for ( let i = 2 ; i < limit; ++i ) {
  9. if ( num % i == 0 ) {
  10. ret.push(i);
  11. if ( ret.length > 4 ) { break; }
  12. }
  13. }
  14. divisorsCache.set(num, ret);
  15. return ret;
  16. }
  17. let ret: number = 0;
  18. let nums_size = nums.length;
  19. for ( let i = 0; i < nums_size; ++i ) {
  20. const divs: number[] = divisors(nums[i]);
  21. if ( divs.length == 4 ) {
  22. ret += divs[0] + divs[1] + divs[2] + divs[3];
  23. }
  24. }
  25. return ret;
  26. };
  27. function main() {
  28. function r(nums: number[], exp: number) {
  29. console.log(`sumFourDivisors([${nums}]) = ${sumFourDivisors(nums)} | exp: ${exp}`)
  30. }
  31. r([21,4,7], 32)
  32. r([21,21], 64)
  33. r([1,2,3,4,5], 0)
  34. r([1,2,3,4,5,6,7,8,9,10], 45)
  35. }
  36. main()