C++ 中从给定数组中添加素数可以得到的不同和的计数
我们有两个数组,包含素数和非素数。目标是找到每个数组中素数对的不同和的计数。
我们将通过从每个数组中生成两个素数的对,取它们的和并将其添加到 set<int> sums 中来做到这一点。最后,集合的大小是素数的不同和的数量。
让我们用例子来理解。
输入
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) 获取两个数组并返回素数对的不同和的计数。
取一个 set<int> sum 来存储不同的和。
使用 for 循环遍历两个数组的每个元素。
检查是否 isprime(arr1[i]) && isprime(arr2[j])。如果为真,则将和作为 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
广告