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

ผลรวมของตัวเลขแบบเรียกซ้ำเป็นจำนวนเฉพาะหรือไม่มีใน C++


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

ให้เราดูสถานการณ์อินพุตเอาต์พุตต่างๆ สำหรับสิ่งนี้

ป้อนข้อมูล − หมายเลข=12341

ผลผลิต − ผลรวมของตัวเลขแบบเรียกซ้ำคือ PRIME

คำอธิบาย

1+2+3+4+1=11

1+1=2

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

ป้อนข้อมูล − หมายเลข=1664

ผลผลิต − ผลรวมของตัวเลขแบบเรียกซ้ำไม่ใช่จำนวนเฉพาะ

คำอธิบาย

1+6+6+4=17

1+7=8

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

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

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

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

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

    • กำหนดจำนวนการโทรเข้าฟังก์ชันเป็น sum(number)

    • ตรวจสอบว่าหมายเลขเป็น 3 หรือหมายเลขเป็น 3 หรือหมายเลขคือ 5 หรือหมายเลขเป็น 7 จากนั้นพิมพ์ PRIME

    • มิฉะนั้น พิมพ์ NOT PRIME

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

    • ตรวจสอบว่าหมายเลขเป็น 0 แล้วส่งคืน 0

    • ELSE ถ้าตัวเลข % 9 เป็น 0) ให้คืนค่า 9

    • มิฉะนั้น หมายเลข % 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