728x90
소수 찾기
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
제한 조건
- n은 2이상 1000000이하의 자연수입니다.
입출력 예
n | result |
---|---|
10 | 4 |
5 | 3 |
입출력 예 설명
입출력 예 #1
1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환
입출력 예 #2
1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환
#define TRUE 1 #define FALSE 0 #include <string> #include <vector> using namespace std; int solution(int n) { int answer = 0, Prime_count = 0; int isPrime = TRUE; int *arry; arry = (int*)malloc(sizeof(int)*(n*2)); for (int i = 2; i < n; i++) // 1,0 거르고 { arry[i] = i; } for (int i = 2; i <= n ;i++) {if (arry[i]==FALSE) continue;
for (int k = i + i;k <= n; k = k + i) { /*k=4,6,8,10 ... 2의배수 k=6,9,12,15... 3의배수 k=8,12,16,20...4의배수 .......*/ arry[k] = FALSE; } if (arry[i]) Prime_count++; } answer = Prime_count; return answer; }
300x250
'Algorithm > Programmers' 카테고리의 다른 글
[Summer/winter Coding ~ (2018)] 배달 (0) | 2020.08.07 |
---|---|
[Summer/winter Coding ~ (2018)] 스킬트리 (0) | 2020.08.07 |
[Level1] 두 정수 사이의 합 [연습문제] C/C++ (0) | 2018.10.01 |
[Level1] 문자열 내림차순으로 배치하기 [연습문제] C/C++ (0) | 2018.09.20 |
[Level1] 문자열 내 마음대로 정렬하기[연습문제] C/C++ (0) | 2018.09.20 |
댓글