C ++中数组中复合元素的计数和总和

给定一个正整数数组,任务是计算给定数组中复合元素的数量和总和。

什么是复合数

从给定的整数集中,不是质数的数字称为复合数,除了1既不是复合数也不是质数,而是一个单位数。因此,明确指出,除了数字1以外,其他数字可以是素数或复合数。

给出的复合材料最大为100-

4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 
26, 27, 28, 30, 32, 33, 34, 35, 36, 38, 39, 40, 42, 44, 
45, 46, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 60, 62, 
63, 64, 65, 66, 68, 69, 70, 72, 74, 75, 76, 77, 78, 80, 
81, 82, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 
98, 99, 100

例如

Input − array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}Output − total count of composite numbers is: 5
      Sum of composite number is: 37

解释− 4,6,8,9,10是给定数组中存在的复合数。因此,它们的数量为5,它们的总和为4 + 6 + 8 + 9 + 10 = 37

Input − array[] = {1, 2, 3, 4, 5}Output − total count of composite numbers is: 1
      Sum of composite number is: 4

解释− 4是给定数组中唯一的复合数。因此,它们的计数为1,它们的总和为4

以下程序中使用的方法如下:

  • 输入正整数数组

  • 计算其大小

  • 初始化变量总和以存储组合数字的总和

  • 将存在于数组中的最大值存储在变量中

  • 计算素数直到最大值

  • 遍历整个数组,并检查数字是否为质数。如果该数字不是素数,则它将是合成数字,如果是,则将合成数字的计数增加1并将其值加到总和上

示例

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//函数
//复合数字的计数
int compcount(int ar[], int num, int* sum){
   //存储数组的最大元素
   int max_val = *max_element(ar, ar + num);
   //使用筛子查找所有质数
   //小于或等于max_val-
   // Create a boolean array "prime[0..n]". A
   //prime [i]中的值最终将为false-
   vector<bool> pr(max_val + 1, true);
   //将0和1的值设置为
   //素数为真。
   pr[0] = true;
   pr[1] = true;
   for (int p = 2; p * p <= max_val; p++){
      //如果prime [p]不变,则
      //这是一个素数
      if (pr[p] == true){
         //更新p的所有倍数
         for (int i = p * 2; i <= max_val; i += p){
            pr[i] = false;
         }
      }
   }
   //计算所有复合材料
   //arr中的数字[]
   int ans = 0;
   for (int i = 0; i < num; i++){
      if (!pr[ar[i]]){
         ans++;
         *sum = *sum + ar[i];
      }
   }
   return ans;
}
//驱动程式码
int main(){
   int ar[] = { 1, 2, 3, 4, 5 };
   int num = sizeof(ar) / sizeof(ar[0]);
   int sum = 0;
   cout << "Count of Composite Numbers = "<< compcount(ar, num, &sum);
   cout << "\nSum of Composite Numbers = " << sum;
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Count of Composite Numbers = 1
Sum of Composite Numbers = 4