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

โปรแกรมแบบเรียกซ้ำสำหรับจำนวนเฉพาะใน C++


เราได้รับจำนวนเต็มเป็นอินพุต เป้าหมายคือการค้นหาว่าตัวเลขอินพุต Num เป็นจำนวนเฉพาะหรือไม่ใช่เฉพาะโดยใช้การเรียกซ้ำ

หากต้องการตรวจสอบว่าตัวเลขเป็นจำนวนเฉพาะหรือไม่ ให้เริ่มเดินทางจาก i=2 ถึง i<=Num/2 หาก i ตัวใดตัวหนึ่งหารด้วย Num ลงตัว ตัวเลขนั้นก็ไม่ใช่จำนวนเฉพาะ เนื่องจากจำนวนเฉพาะหารด้วย 1 ลงตัวและตัวตัวเลขนั้นเอง

ตัวอย่าง

ป้อนข้อมูล − Num =32

ผลผลิต − 32 ไม่ใช่ Prime!

คำอธิบาย − หากเราเริ่มเดินทางจาก i=2 ไปยัง i<=32/2 จากนั้นในตอนแรกมันจะหารด้วย 2 ลงตัวซึ่งบอกว่าไม่ใช่ไพรม์

ป้อนข้อมูล − Num =43

ผลผลิต − 43 เป็นจำนวนเฉพาะ!

คำอธิบาย − หากเราเริ่มเดินทางจาก i=2 ถึง i<=43/2 มันจะหารด้วยจำนวนใด ๆ ระหว่าง 2 ถึง 21 ไม่ได้ ซึ่งบอกว่าเป็นจำนวนเฉพาะ

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

ในแนวทางนี้ เรากำลังใช้ฟังก์ชันเรียกซ้ำ checkPrime(int num1, int index) ซึ่งรับค่าตัวเลขและดัชนีที่จะรับค่าตั้งแต่ 2 ถึง num1/2

สำหรับกรณีฐาน-:ถ้า num1<2 คืนค่า 1 เนื่องจากไม่ใช่ไพรม์

ถ้า num1==2 คืนค่า 2 เนื่องจากเป็นจำนวนเฉพาะ

อื่น:- if(index<=num1/2) แล้วเราถึงจุดที่ไม่มีการหารดัชนี num1 อย่างสมบูรณ์ ดังนั้นให้คืนค่า 1 เนื่องจากเป็นไปได้สำหรับจำนวนเฉพาะเท่านั้น มิฉะนั้น เรียกซ้ำสำหรับดัชนีถัดไปโดยใช้ result=checkPrime(num1, index+1 )

  • ใช้หมายเลขอินพุต Num

  • ฟังก์ชัน checkPrime(int num1,int index) รับอินพุตและส่งกลับ 1 หากตัวเลขเป็นจำนวนเฉพาะ มิฉะนั้นจะคืนค่า 0

  • ถ้า num1<2 คืนค่า 0 เนื่องจากตัวเลขที่น้อยกว่า 2 ไม่ใช่จำนวนเฉพาะ

  • ถ้า num1 เป็น 2 หรือ 3 ให้คืนค่า 1 เนื่องจาก 2 และ 3 เป็นจำนวนเฉพาะ

  • หากดัชนี num1% คือ <=num1/2 ให้คืนค่า 1 เป็นไม่เกิน num1/2 ไม่มีตัวเลขใดถูกหารทั้งหมด num1 ดังนั้น num1 จึงเป็นจำนวนเฉพาะ

  • เรียกซ้ำสำหรับดัชนีถัดไปโดยใช้ result=checkPrime(num1, index+1)

  • ส่งคืนผลลัพธ์

  • ผลการพิมพ์ที่ได้รับภายใน main.

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int checkPrime(int num1, int index){
   if(num1<2){
      return 0;
   }
   if (num1 == 2 || num1==3){
      return 1;
   }
   if (num1 % index == 0){
      return 0;
   }
   if (index <= num1/2){
      return 1;
   }
   int result=checkPrime(num1, index+1);

   return (result);
}
int main(){
   int Num = 31;
   if (checkPrime(Num,2)==1){
      cout <<Num<<" is a Prime number !";
   }
   else{
      cout <<Num<<" is non Prime!";
   }

   return 0;
}

ผลลัพธ์

หากเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้

31 is a Prime number!