문제 : 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
풀이 : 에라토스테네스의 체! C# 에서는 Bool 배열을 만들어서 진행 하였고 Java 에서는 주어진 n 까지의 배열을 만드는 것부터 시작해서 풀게 되었다!
package com.company;
import java.util.Arrays;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class Find_PrimeNumber {
public static void main(String[] args) {
System.out.println(solution(10));
}
public static int solution(int n) {
long answer = 0;
int[] _intList;
Stream<Integer> intStream = IntStream.rangeClosed(0,n).boxed();
_intList = intStream.mapToInt(Integer::intValue).toArray();
_intList[0]= 0;
_intList[1]= 0;
for (int i = 2; i*i <= n; i++)
{
if (_intList[i]==0) continue;
for (int j = i + i; j <= n; j+=i)
_intList[j]=0;
}
answer = Arrays.stream(_intList).filter(x -> x != 0).count();
return (int)answer;
}
}
'알고리즘 > JAVA' 카테고리의 다른 글
[JAVA] 스킬트리 - 프로그래머 (0) | 2020.10.23 |
---|---|
[JAVA] 124 나라의 숫자 - 프로그래머스 (0) | 2020.10.22 |
[JAVA] 3진법 뒤집기 - 프로그래머스 (0) | 2020.10.21 |
[JAVA] 콜라츠 추측 - 프로그래머스 (0) | 2020.10.21 |
[JAVA] 제일 작은수 제거하기 - 프로그래머스 (0) | 2020.10.21 |