문제 : 숫자를 입력하면 입력된 숫자이하의 소수가 출력된다.
ex) input : 9 output : 2 3 5 7
기본 원리
1. 소수는 true 소수가 아닌 수는 false 로 출력해보자
2. 소수가 아닌 수는 소수의 배수이다.
import java.io.*;
public class primenum {
public static void main(String[] args) throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str1 = in.readLine();
int num1 = Integer.parseInt(str1);
boolean Isprime[] = new boolean[num1];
for(int i =0;i<num1;i++) {
Isprime[i] = true ;
}
for(int i=2;i<num1;i++) {
if (Isprime[i-1]) {
for(int j = 2; i*j<=num1;j++) {
Isprime[(i*j)-1]=false;
}
}
else {
continue;
}
}
for(int i=1;i<num1;i++) { //1은 소수가 아니랭
if (Isprime[i])
System.out.print(i+1);
}
}
}
'[알고리즘]' 카테고리의 다른 글
[수학] 유클리드 호제법 (0) | 2022.11.17 |
---|---|
binarysearch이진탐색이분탐색이라고 불리는 거 java로 만들어봐! (0) | 2022.11.15 |
[백준] 1764번 듣보잡!!!!!문제 hashmap문제 (0) | 2022.11.15 |
소수를 출력해보자-2 (에라토스테네스의 체) (0) | 2022.11.09 |
백준 1152번 : 단어의 개수 (0) | 2022.11.07 |