Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm các tổng riêng biệt có thể nhận được bằng cách cộng các số nguyên tố từ các mảng đã cho trong C ++

Chúng ta được cung cấp hai mảng chứa các số nguyên tố và không nguyên tố. Mục đích là tìm số tổng phân biệt của các cặp số nguyên tố trong mỗi mảng.

Chúng ta sẽ làm điều này bằng cách tạo một cặp hai số nguyên tố từ mỗi mảng, lấy tổng của chúng và cộng chúng để đặt các tổng . Cuối cùng, kích thước của tập hợp là số lượng các tổng số nguyên tố riêng biệt.

Hãy cùng hiểu với các ví dụ.

Đầu vào

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

Đầu ra

Distinct Sums of primes :3

Giải thích

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

Đầu vào

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

Đầu ra

Distinct Sums of primes :0

Giải thích

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

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng ta có hai mảng Arr1 [] và Arr2 [] cho các số dương và len1 và len2 là độ dài của chúng.

  • Hàm isprime (int num) trả về 1 nếu num là số nguyên tố, ngược lại trả về 0.

  • Hàm prime_Sums (int arr1 [], int arr2 [], int l1, int l2) nhận cả hai mảng và trả về tổng số các tổng riêng biệt của các cặp số nguyên tố.

  • Lấy một tập hợp tổng để lưu trữ các tổng riêng biệt.

  • Duyệt qua từng phần tử của cả hai mảng usin cho các vòng lặp.

  • Kiểm tra xem có phải là chuẩn (arr1 [i]) &&là chuẩn (arr2 [j]) hay không. Nếu đúng, hãy lấy tổng là tmp =arr1 [i] + arr2 [j].

  • Thêm tmp vào thiết lập bằng sum.insert (tmp)

  • Cuối cùng, trả về sum.size () là các tổng riêng biệt của các số nguyên tố.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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