๋ฐ์ํ
๋ฌธ์
์ ์ N์ด ์ฃผ์ด์ก์ ๋, ์์ธ์๋ถํดํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
## ์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ N (1 โค N โค 10,000,000)์ด ์ฃผ์ด์ง๋ค.
## ์ถ๋ ฅ
N์ ์์ธ์๋ถํด ๊ฒฐ๊ณผ๋ฅผ ํ ์ค์ ํ๋์ฉ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋ค. N์ด 1์ธ ๊ฒฝ์ฐ ์๋ฌด๊ฒ๋ ์ถ๋ ฅํ์ง ์๋๋ค.
์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ์ถ | ์ ๋ต | ๋งํ ์ฌ๋ | ์ ๋ต ๋น์จ |
---|---|---|---|---|---|
1 ์ด | 256 MB | 99599 | 54229 | 42046 | 53.083% |
https://www.acmicpc.net/problem/11653
ํ์ด
๋ก์ง์ ๋ณด๋ฉด ์๋์ ๊ฐ์ด ํ์ด๋ ์์๋ค.
72 / 2 = 36;
36 / 2 = 18;
18 / 2 = 9;
9 / 3 = 3;
3 / 3= 1;
1 < 2; (break);
72๋ฅผ ๋๋๋ค๊ณ ํ์๋ ๋๋ ์ง๋ ๊ฐ์ผ๋ก ๊ณ์ํด์ ๋๋๋ค.
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
public class ์์ธ์๋ถํด {
public static void main(String[] args) throws IOException {
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
List<Integer> list = new LinkedList<>();
while (true){
if(n < 2) break; //n์ด 2๋ณด๋ค ์์๋ while๋ฌธ ํ์ถ
for(int i=2; i<=n; i++){
if(n%i == 0){ //n์ด i๋ก ๋๋ ์ง๋
list.add(i); //๋๋ ์ง๋ ๊ฐ์ ์์์ด๋ฏ๋ก, list์ ๋ฃ์ด์ค๋ค.
n /= i; //n์ i๋ก ๋๋๊ณ for๋ฌธ์ ํ์ถํ๋ค.
break;
}
}
}
list.forEach(System.out::println);
br.close();
}
}
๋ฐ์ํ