Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- const PE = require('../pe_helper');
- const fib = PE.fibonacci(24);
- const primes = PE.primeList(fib[24]);
- const z_memo_map = {};
- const p_memo_map = {};
- function makeKey(n, k) {
- return `${n},${k}`;
- }
- // Sum of factors equal to n, smallest prime factor at least k.
- function Z(n, k) {
- let key = makeKey(n, k);
- if (z_memo_map[key]) {
- return z_memo_map[key];
- }
- if (n === 0) {
- return 1;
- }
- if (n < k) {
- return 0;
- }
- let total = 0;
- for (let i = 0; i < primes.length; i++) {
- let p = primes[i];
- if (p < k) {
- continue;
- }
- if (p > n) {
- break;
- }
- total += p * Z(n - p, p);
- }
- total = total % 1e9;
- z_memo_map[key] = total;
- return total;
- }
- async function start() {
- for (let i = 2; i < fib[24]; i++) {
- Z(i, 2);
- // GC
- if (i % 1000 === 0) {
- console.log(i);
- await new Promise((res, rej) => setTimeout(_ => { res() }, 1));
- }
- }
- }
- start();
- console.log(Z(fib[24], 2));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement