소수 및 소수가 아닌 숫자를 포함하는 두 개의 배열이 제공됩니다. 목표는 각 배열에 있는 소수 쌍의 고유한 합 수를 찾는 것입니다.
각 배열에서 두 개의 소수 쌍을 만들고 합계를 가져와 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[] has no prime number. Prime pairs do not exist.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
양수에 대한 두 개의 배열 Arr1[] 및 Arr2[]와 길이로 len1 및 len2가 있습니다.
-
함수 isprime(int num)은 num이 소수이면 1을 반환하고 그렇지 않으면 0을 반환합니다.
-
함수 Prime_Sums(int arr1[],int arr2[],int l1,int l2)는 두 배열을 모두 사용하여 소수 쌍의 고유한 합계 개수를 반환합니다.
-
고유한 합계를 저장하려면 집합
합계를 가져옵니다. -
for 루프를 사용하여 두 배열의 각 요소를 탐색합니다.
-
isprime(arr1[i]) &&isprime(arr2[j])인지 확인하십시오. true이면 합계를 tmp=arr1[i]+arr2[j]로 취합니다.
-
sum.insert(tmp)를 사용하여 설정할 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