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

นับผลรวมที่แตกต่างกันที่ได้จากการบวกจำนวนเฉพาะจากอาร์เรย์ที่กำหนดใน C++


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

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

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

อินพุต

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[] ไม่มีจำนวนเฉพาะ คู่จำนวนเฉพาะไม่มีอยู่

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

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

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

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

  • ใช้ set<int> sum เพื่อเก็บผลรวมที่แตกต่างกัน

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

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

  • เพิ่ม tmp ลงใน set โดยใช้ 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