Advertisement
Guest User

Untitled

a guest
Jul 18th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. const PE = require('../pe_helper');
  4.  
  5. const fib    = PE.fibonacci(24);
  6. const primes = PE.primeList(fib[24]);
  7.  
  8. const z_memo_map = {};
  9. const p_memo_map = {};
  10.  
  11. function makeKey(n, k) {
  12.     return `${n},${k}`;
  13. }
  14.  
  15. // Sum of factors equal to n, smallest prime factor at least k.
  16. function Z(n, k) {
  17.     let key = makeKey(n, k);
  18.  
  19.     if (z_memo_map[key]) {
  20.         return z_memo_map[key];
  21.     }
  22.    
  23.     if (n === 0) {
  24.         return 1;
  25.     }
  26.  
  27.     if (n < k) {
  28.         return 0;
  29.     }
  30.  
  31.     let total = 0;
  32.  
  33.     for (let i = 0; i < primes.length; i++) {
  34.         let p = primes[i];
  35.  
  36.         if (p < k) {
  37.             continue;
  38.         }
  39.  
  40.         if (p > n) {
  41.             break;
  42.         }
  43.  
  44.         total += p * Z(n - p, p);
  45.     }
  46.  
  47.     total = total % 1e9;
  48.  
  49.     z_memo_map[key] = total;
  50.  
  51.     return total;
  52. }
  53.  
  54. async function start() {
  55.     for (let i = 2; i < fib[24]; i++) {
  56.         Z(i, 2);
  57.  
  58.         // GC
  59.         if (i % 1000 === 0) {
  60.             console.log(i);
  61.             await new Promise((res, rej) => setTimeout(_ => { res() }, 1));
  62.         }
  63.     }
  64. }
  65.  
  66. start();
  67.  
  68. console.log(Z(fib[24], 2));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement