[알고리즘]

소수를 찾아보자! (java)

지기음 2022. 10. 28. 10:35

문제 : 숫자를 입력하면 입력된 숫자이하의 소수가 출력된다. 

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);
		}
		

	}
}