숫자 배열이 제공됩니다. 목표는 해당 배열에서 소수의 개수를 찾는 것입니다.
소수는 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