[300]6388号キム・バッハの推測
11732 ワード
6388号キム・バッハ的推测
質問する
1742年、ドイツのアマチュア数学者クリスティアン・ゴルドバッハはレオン・ハトオラーに手紙を書いて、以下の推測を提案した.
4より大きいすべての偶数は、2つの奇数小数の和として表すことができる.
例えば、8は3+5と表すことができ、3と5はいずれも奇数の小数である.また、20=3+17=7+13、42=5+37=11+31=13+29=19+23となる.
この推測はまだ未解決の問題だ.
100万以下のすべての偶数について、この推測を検証するプログラムを作成してください.
入力
入力は、1つ以上のテストケースで構成されます.テストボックスの数は100000個を超えない.
各試験箱は偶数整数nからなる.(6 ≤ n ≤ 1000000)
入力した最後の行にはゼロが表示されます.
しゅつりょく
各試験例について、n=a+bの形式で出力する.このとき、aとbは奇数小数である.数値と演算子はスペースで区切られています.nを生成する方法が複数ある場合、b−a出力は最大である.また、2つの奇数小数の和がnを表すことができない場合、「Goldbach's推定は間違っている」.出力します.
コピー例入力1
8
20
42
0
コピー例出力1
8 = 3 + 5
20 = 3 + 17
42 = 5 + 37
try1
//---- 세팅 ----//
const fs = require('fs');
const stdin = (
process.platform === 'linux'
? fs.readFileSync('/dev/stdin').toString()
: `\
8
20
42
13
0
`
).split('\n');
const input = (() => {
let line = 0;
return () => stdin[line++];
})();
//---- 풀이 -----//
const numberArr = [];
while (true) {
const number = Number(input());
if (number === 0) break;
numberArr.push(number);
}
const isPrime = n => {
if (n <= 1) return false;
for (let i = 2; i * i <= n; i++) {
if (n % i === 0) return false;
}
return true;
};
const goldbach = n => {
for (let a = 2; a < n; a++) {
const b = n - a;
if (isPrime(a) && isPrime(b) && a % 2 !== 0 && b % 2 !== 0) {
return [a, b];
}
}
return [false, false];
};
const res = [];
numberArr.forEach(n => {
const [a, b] = goldbach(n);
res.push(a ? `${n} = ${a} + ${b}` : `Goldbach's conjecture is wrong.`);
});
console.log(res.join('\n'));
に答える
aは2からnに上昇した.
b n-aに設定します.
aとbはいずれも小数で奇数の場合に戻ります.
金バッハ数が存在しない場合、出力
Goldbach's conjecture is wrong.
.Reference
この問題について([300]6388号キム・バッハの推測), 我々は、より多くの情報をここで見つけました https://velog.io/@younoah/boj-6388テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol