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

การนับจำนวนเฉพาะที่สามารถรับได้โดยการเพิ่มจำนวนเฉพาะจากอาร์เรย์ที่กำหนดใน C++


เราได้รับอาร์เรย์สองอาร์เรย์ที่มีจำนวนเฉพาะและไม่ใช่จำนวนเฉพาะ เป้าหมายคือการหาจำนวนเฉพาะของจำนวนเฉพาะในแต่ละอาร์เรย์

เราจะทำสิ่งนี้โดยสร้างคู่ของไพรม์สองตัวจากแต่ละอาร์เรย์ นำผลรวมของพวกมันมาบวกเข้ากับเซ็ต ผลรวม ในท้ายที่สุด ขนาดของเซตคือจำนวนเฉพาะของจำนวนเฉพาะที่แตกต่างกัน

มาทำความเข้าใจกับตัวอย่างกัน

ป้อนข้อมูล

Arr1[] = { 1,2,3 } Arr2[] = { 2,3,4}

ผลผลิต

Distinct Sums of primes :3

คำอธิบาย

Prime pairs (2,2), (2,3), (3,2), (3,3).
Unique sums are 4,5,6

ป้อนข้อมูล

Arr1[] = { 1,4,6 } Arr2[] = { 2,3,5 }

ผลผลิต

Distinct Sums of primes :0

คำอธิบาย

Arr1[] has no prime number. Prime pairs do not exist.

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

  • เรามีอาร์เรย์สองอาร์เรย์ Arr1[] และ Arr2[] สำหรับจำนวนบวก และ len1 และ len2 ตามความยาว

  • ฟังก์ชัน isprime(int num) คืนค่า 1 หาก num เป็นจำนวนเฉพาะ มิฉะนั้นจะคืนค่า 0

  • ฟังก์ชัน prime_Sums(int arr1[],int arr2[],int l1,int l2) รับทั้งอาร์เรย์และคืนค่าจำนวนผลรวมที่แตกต่างกันของคู่ไพรม์

  • นำ set sum เพื่อเก็บผลรวมที่แตกต่างกัน

  • สำรวจแต่ละองค์ประกอบของอาร์เรย์ทั้งสองสำหรับลูป

  • ตรวจสอบว่า isprime(arr1[i]) &&isprime(arr2[j]) หากเป็นจริง ให้หาผลรวมเป็น tmp=arr1[i]+arr2[j]

  • เพิ่ม tmp เพื่อตั้งค่าโดยใช้ sum.insert(tmp)

  • ในตอนท้ายส่งคืน sum.size() ซึ่งเป็นผลรวมที่ชัดเจนของจำนวนเฉพาะ

ตัวอย่าง

#include<bits/stdc++.h>
using namespace std;
int isprime(int num){
   if (num <= 1)
      return 0;
   for (int i = 2; i <= num/2; i++)
      if (num % i == 0)
         return 0;
   return 1; //if both failed then num is prime
}
int prime_Sums(int arr1[],int arr2[],int l1,int l2){
   int count=0;
   set sum;
   for (int i = 0; i < l1; i++){
      for(int j=0; j < l2; j++){
         if(isprime(arr1[i]) && isprime(arr2[j])){
            int tmp=arr1[i]+arr2[j];
            sum.insert(tmp);
         }
      }
   }
   return sum.size();
}
int main(){
   int Arr1[] = { 2, 3, 5 };
   int Arr2[] = { 2, 2, 4, 7 };
   int len1=sizeof(Arr1) / sizeof(Arr1[0]);
   int len2=sizeof(Arr2) / sizeof(Arr2[0]);
   cout<<"Distinct Sums of primes :"<<prime_Sums(Arr1,Arr2,len1,len2);
   return 0;
}

ผลลัพธ์

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

Count of ways to spell a number with repeated digits are: 16