Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

เลขคู่ที่เป็นผลรวมของจำนวนเฉพาะ (Even Number with Prime Sum)

บทนำ

เลขคู่ทุกตัวตั้งแต่ 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