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

ผลรวมหลักเลขแบบเรียกซ้ำ (Recursive Sum of Digits) ตรวจสอบเป็นจำนวนเฉพาะหรือไม่ด้วย C++

กำหนดตัวแปรจำนวนเต็ม number เป็นอินพุต เป้าหมายคือคำนวณผลรวมของหลักเลขของตัวเลขอินพุต และตรวจสอบว่าผลรวมนั้นเป็นจำนวนเฉพาะ (Prime) หรือไม่ ทำซ้ำจนกว่าตัวเลขที่ได้จากผลรวมหลักเลขจะกลายเป็นตัวเลขหลักเดียว (Single Digit) ตรวจสอบว่าตัวเลขนั้นเป็นจำนวนเฉพาะหรือไม่ หากตัวเลขอินพุตคือ 123 ผลรวมหลักเลขจะเป็น 1+2+3=6 ซึ่งไม่ใช่จำนวนเฉพาะ และ 6 เป็นตัวเลขหลักเดียว

ดูสถานการณ์ Input-Output ต่างๆ

Input - number = 12341

Output - Recursive sum of digits of a number is PRIME

คำอธิบาย -

1+2+3+4+1 = 11

1+1 = 2

2 เป็นจำนวนเฉพาะ

Input - number = 1664

Output - Recursive sum of digits of a number is NOT PRIME

คำอธิบาย -

1+6+6+4 = 17

1+7 = 8

8 เป็นจำนวนที่ไม่ใช่เฉพาะ

วิธีการที่ใช้ในโปรแกรมด้านล่าง

  • ประกาศตัวแปรจำนวนเต็มเป็น number

  • ส่งข้อมูลไปยังฟังก์ชัน Recursively_Prime(number)

  • ภายในฟังก์ชัน Recursively_Prime(number)

    • ตั้งค่า number เป็นการเรียกฟังก์ชัน sum(number)

    • ตรวจสอบ IF number เป็น 2 หรือ 3 หรือ 5 หรือ 7 แล้วพิมพ์ PRIME

    • ELSE พิมพ์ NOT PRIME

  • ภายในฟังก์ชัน sum(int number)

    • ตรวจสอบ IF number เป็น 0 แล้วคืนค่า 0

    • ELSE IF number % 9 เท่ากับ 0 แล้วคืนค่า 9

    • ELSE คืนค่า number % 9

  • พิมพ์ผลลัพธ์

ตัวอย่างโค้ด

#include<iostream>
using namespace std;

int sum(int number) {
    if(number == 0) {
        return 0;
    } else {
        if(number % 9 == 0) {
            return 9;
        } else {
            return number % 9;
        }
    }
}

void Recursively_Prime(int number) {
    number = sum(number);
    cout<<"Recursive sum of digits of a number is ";
    if(number == 2 || number == 3 || number == 5 || number == 7) {
        cout << "PRIME";
    } else {
        cout << "NOT PRIME";
    }
}

int main() {
    int number = 5555;
    Recursively_Prime(number);
}

ผลลัพธ์

หากเรารันโค้ดข้างต้น จะได้ผลลัพธ์ดังนี้:

Recursive sum of digits of a number is PRIME