【简单】算法nodeJs:查找组成一个偶数最接近的两个素数

55 阅读1分钟

描述

对于给定的偶数 n,找出两个素数 a,b满足:

  • 它们的和等于 n;
  • 它们的差值的绝对值最小。

我们可以证明,a,b 一定存在,从小到大输出满足条件的素数对。

输入描述:

输入一个整数 n(4≦n≦10的3次方)。保证 n 是偶数。

输出描述:

第一行输出一个整数 a,代表满足条件的素数对中的较小者。
第二行输出一个整数 b,代表满足条件的素数对中的较大者。

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    const isSu = (val) => {
        let flag = true;
        for (let j = 2; j <= Math.sqrt(val); j++) {
            if (val % j == 0) {
                flag = false;
                continue;
            }
        }
        return flag;
    };
    while ((line = Number(await readline()))) {
        let su = [];
        for (let i = 1; i <= line / 2; i++) {
            if (isSu(i) && isSu(line - i)) su.push([i, line - i]);
        }
        su.sort((a, b) => Math.abs(a[0] - a[1]) - Math.abs(b[0] - b[1]));
        console.log(su[0][0])
        console.log(su[0][1])
    }
})();