Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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을 반환합니다.

  • 숫자가 <=1이면 소수가 아닌 경우 0을 반환합니다.

  • 이제 2에서 시작하여 num/2까지 어떤 숫자가 num( num%i==0)을 완전히 나누면 num이 소수가 아닌 경우 0을 반환합니다.

  • 그렇지 않으면 1을 반환합니다.

  • 변수 isprime은 숫자가 소수인지 여부를 알려줍니다( 1은 소수를 의미함)

  • 변수 개수는 arr[]

    에 소수의 수를 저장합니다.
  • 메인 트래버스 전체 배열 내부에서 각 요소 arr[i]를 checkPrime( arr[i] )에 전달하고 결과가 1( isprime==1 )이면 카운트를 증가시킵니다.

  • 끝에 있는 개수는 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