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 |