1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public int solution(int n) {
    //1 ~ n까지 소수의 개수
 
    //배열 초기화
    bool[] c = Enumerable.Repeat<bool>(false, n).ToArray<bool>();
 
    //1은 소수가 아님
    c[0= true;
 
    for (int i = 2; i <= n; i++)
    {
        //위 for문이 2부터 시작하고
        //2는 소수기 때문에 아래 if문을 바로 타도 상관 없음
        if (c[i-1== false)
        {
            for (int j = i + i; j <= n; j = j + i)
            {
                //해당 소수의 배수는 모두 제거 함
                //속도를 증가시키고 싶으면 
                //해당 소수의 제곱 + (해당 소수 * 2) 로 하면 처리 속도가 더 빠를듯?
                //왜냐면 현재는 for문이 돌면 중복으로 체크함
                c[j-1= true;
            }
        }
    }
    //false인것만 놔두고 모두 제거(false == 소수)
    c = c.Where(x => x == false).ToArray();
    return c.Length;
}
 
cs



'알고리즘 > C#' 카테고리의 다른 글

C# 정수 제곱근 구하기  (0) 2019.09.19
C# 시저 암호  (0) 2019.09.19
C# 하샤드 수 구하기  (0) 2019.09.19
C# 나누어 떨어지는 숫자 배열  (0) 2019.09.19
C# 두 정수 사이의 합  (0) 2019.09.19