# HJ60 查找组成一个偶数最接近的两个素数
https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9 (opens new window)
# 描述
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。
输入描述:
输入一个大于2的偶数
输出描述:
从小到大输出两个素数
示例1
输入:
20
输出:
7
13
示例2
输入:
4
输出:
2
2
# 解答
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
let line;
let num;
while(line = await readline()){
num = parseInt(line);
}
let minNum1;
let minNum2;
let min = num;
for (let i = 2, len = num / 2; i <= len; i++) {
const num1 = i;
const num2 = num - i;
if (!(isPrime(num1) && isPrime(num2))) {
continue;
}
const delta = num2 - num1;
if (delta < min) {
min = delta;
minNum1 = num1;
minNum2 = num2;
}
}
console.log(minNum1);
console.log(minNum2);
}();
function isPrime(num) {
// 1
if (num <= 1) {
return false;
}
// 2 、3
if (num <= 3) {
return true;
}
// 2、3 不进循环
for (let i = 2, len = Math.sqrt(num); i <= len; i++) {
if (num % i === 0) {
return false;
}
}
return true;
}
上一篇: 下一篇:
本章目录