C++中数组质数计数


给定一个数字数组。目标是找到该数组中质数的数量。

质数只能被1和它本身整除。它只有两个因数。我们将从第一个元素到最后一个元素检查数字是否为质数,并增加到目前为止找到的质数的计数。

要检查数字N是否为质数,请检查[2到N/2]范围内的数字是否完全整除N。如果是,则它是非质数。否则它是质数。

让我们通过示例来理解。

输入 − arr[]= { 1,2,3,4,5,6,7,8,9 }

输出 − 质数数量 − 4

解释 − 这里2,3,5,7是质数,1,4,6,8,9是非质数。

输入 − arr[]= { 11,12,4,61,23 }

输出 − 质数数量 − 3

解释 − 这里11,61,23是质数,12,4是非质数。

下面程序中使用的方案如下

  • 我们取一个包含随机数字的整数数组arr[]。

  • 函数checkPrime(int num) 检查传入的数字num是否为质数。如果是质数,则返回1;否则返回0。

  • 如果num <=1,则它是非质数,返回0。

  • 现在从2到num/2开始,如果任何数字完全整除num (num%i==0),则num是非质数,返回0。

  • 否则返回1。

  • 变量isprime表示数字是否为质数(1表示质数)

  • 变量count存储arr[]中质数的数量

  • 在main内部遍历整个数组并将每个元素arr[i]传递给checkPrime(arr[i]),如果结果为1 (isprime==1),则递增count。

  • 最后count是arr[]中质数的数量

示例

 在线演示

#include <bits/stdc++.h>
using namespace std;
// Function to find if number is prime
int checkPrime(int num){
    if (num <= 1)
      { return 0; }
   // Check from 2 to half of arr[i]
   for (int j = 2; j <= num/2; j++){
      if (num % j == 0){
         return 0;
      }
      return 1;
   }
}
int main(){
   int arr[] = { 1,3,5,4,8,13,11 };
   int n = 7;
   int count=0;
   int isprime=0;
   for(int i=0;i<n;i++){
      isprime=checkPrime(arr[i]);
      if(isprime==1)
         count++;
   }
   cout<<"Count of number of primes in array : "<<count;
   return 0;
}

输出

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

Count of number of primes in array : 4

更新于:2020年8月29日

10K+ 浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.