본문 바로가기

JAVA/조건문 문제

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.

문제 

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를 반환



*문제의 핵심 포인트 

"에라토스테네스의 체"를 이용하면 될 것 같아요.

1에서 100까지의 수를 쓴 후 소수가 아닌 수를 지워가는 방법인데요~

해당하는 2를 소수로 고르면 2의 배수는 모두 지우고

3을 고르고 또 3의 배수를 지워가는 방식입니다.

1        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

31  32  33  34  35  36  37  38  39  40

41  42  43  44  45  46  47  48  49  50

51  52  53  54  55  56  57  58  59  60

61  62  63  64  65  66  67  68  69  70

71  72  73  74  75  76  77  78  79  80

81  82  83  84  85  86  87  88  89  90

91  92  93  94  95  96  97  98  99  100 

빨간 수들이 소수입니다~