◎ 문제
○ 출처
https://programmers.co.kr/learn/courses/30/lessons/12921
○ 문제 설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. |
○ 제한 조건
|
○ 입출력 예
○ 입출력 예 설명
입출력 예 #1 입출력 예 #2 |
○ 작성 예시 코드
public class Solution {
public int solution(int n) {
int answer = 0;
return answer;
}
}
◎ 나의 문제 풀이
using System;
public class Solution
{
public int solution(int n)
{
int answer = 0;
// 반복시킬 횟수인 제곱근을 구한다.
int square_root = (int)Math.Sqrt(n);
// 주어진 수 만큼을 배열에 초기화
int[] num_array = new int[n + 1];
for(int i = 2; i <= n; ++i)
{
num_array[i] = i;
}
// 제곱근만큼 반복
for(int i = 2; i <= square_root; ++i)
{
// 이미 제거된 값이면 continue
if (num_array[i] == 0) continue;
// i번째의 배수 반복으로 소수가 아닌것들을 제거함
for(int j = i * 2; j <= n; j += i)
{
if (num_array[j] == 0) continue;
num_array[j] = 0;
}
}
// 제거되지 않은것은 모두 소수이다
foreach (var num in num_array)
{
if(num != 0)
{
answer++;
}
}
return answer;
}
}
◎ 풀이 참고
<에라토스테네스의 체> https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4
|
'프로그래밍 문제 풀이 > C#' 카테고리의 다른 글
[프로그래밍 문제 풀이] 프로그래머스 - 자릿수 더하기(C#) (0) | 2020.07.14 |
---|---|
[프로그래밍 문제 풀이] 프로그래머스 - 서울에서 김서방 찾기(C#) (0) | 2020.07.12 |
[프로그래밍 문제 풀이] 프로그래머스 - 문자열 다루기 기본(C#) (0) | 2020.07.07 |
[프로그래밍 문제 풀이] 프로그래머스 - 두 정수 사이의 합(C#) (0) | 2020.07.04 |
[프로그래밍 문제 풀이] 프로그래머스 - 가운데 글자 가져오기(C#) (0) | 2020.07.03 |