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