บทนำ
เลขคู่ทุกตัวตั้งแต่ 4 เป็นต้นไป สามารถแสดงเป็นผลรวมของจำนวนเฉพาะสองจำนวนได้ บางครั้งตัวเลขอาจมีการรวมของจำนวนเฉพาะมากกว่าหนึ่งวิธี
ตัวอย่าง: 10 = (5 + 5) และ (7 + 3)
อัลกอริทึมนี้จะหาการรวมของจำนวนเฉพาะทั้งหมดสำหรับตัวเลขที่กำหนด เมื่อตัวเลข x เป็นจำนวนเฉพาะ เราจะตรวจสอบว่า (number - x) เป็นจำนวนเฉพาะหรือไม่ ถ้าใช่ ผลรวมของ x และ (number - x) จะแสดงถึงเลขคู่นั้น
อินพุตและเอาต์พุต
Input: เลขคู่: 70 Output: Prime sums 70 = 3 + 67 70 = 11 + 59 70 = 17 + 53 70 = 23 + 47 70 = 29 + 41
อัลกอริทึม
dispPrimeSum(num)
Input: เลขคู่
Output: แสดงตัวเลขโดยใช้ผลรวมของจำนวนเฉพาะบางจำนวน
Begin
if num เป็นคี่, then
exit
for i := 3 to num/2, do
if i เป็นจำนวนเฉพาะ, then
if (num - i) เป็นจำนวนเฉพาะ, then
display "num = i + (num - i)"
done
End
ตัวอย่างโค้ด (C++)
#include <iostream>
using namespace std;
int isPrime(int number) {
// ตรวจสอบว่าตัวเลขเป็นเฉพาะหรือไม่
int lim;
lim = number/2;
for (int i = 2; i <= lim; i++) {
if (number % i == 0)
return 0; // ตัวเลขไม่ใช่เฉพาะ
}
return 1; // ตัวเลขเป็นเฉพาะ
}
void displayPrimeSum(int num) {
string res;
if (num % 2 != 0) {
// เมื่อตัวเลขเป็นคี่
cout << "Invalid Number";
exit(1);
}
for (int i = 3; i <= num/2; i++) {
if (isPrime(i)) {
// ถ้า i เป็นจำนวนเฉพาะ
if (isPrime(num-i)) { // num - i เป็นเฉพาะด้วย
cout << num << "= " << i << " + " << (num-i) << endl;
}
}
}
}
main() {
int num;
cout << "Enter an even number: "; cin >> num;
displayPrimeSum(num);
}
ผลลัพธ์
Enter an even number: 70 70 = 3 + 67 70 = 11 + 59 70 = 17 + 53 70 = 23 + 47 70 = 29 + 41