์์(Prime Number)
์์๋ ์์ ๋ณด๋ค ์์ ๋๊ฐ์ ์์ฐ์๋ฅผ ๊ณฑํ์ฌ ๋ง๋ค ์ ์๋ 1๋ณด๋ค ํฐ ์์ฐ์์ด๋ค.
ex) 5๋ 5*1 ๋๋ 1*5๋ก ์๋ฅผ ๊ณฑํฉ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด ๊ทธ ์ ์์ ์ ํฌํจํ๊ธฐ ๋๋ฌธ์ 5๋ ์์์ด๋ค.
2, 3, 5, 7, 11 ... ๋ฑ 1๊ณผ ์๊ธฐ ์์ ๋ง์ ์ฝ์๋ก ๊ฐ๋ ์๋ฅผ ์์๋ผ๊ณ ํ๋ค.
์์ ํ๋ณํ๊ธฐ ์๊ณ ๋ฆฌ์ฆ
๊ธฐ๋ณธ์ ์ผ๋ก ์์๋ฅผ ํ๋ณํ๋ ๋ฐฉ๋ฒ์ ์ด๋ ์๊น์ง ํ๋ณํ๋ ์๋ฅผ ๋๋ ์ ๋๋จธ์ง๊ฐ 0์ด ์๋์ค๋ฉด ์์๋ก ์ธ์ ํ๋ค. ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ ์ํด ์ ์ฐจ์ ์ผ๋ก ํ์ด๋ฅผ ํ์ธํด๋ณด์.
ํ์ด1
์ฒซ๋ฒ์งธ ํ์ด๋ 2๋ถํฐ ํ๋ณํ๋ ์ ์ ๊น์ง ๋๋ ๋ณด๊ณ ๋๋จธ์ง๊ฐ 0์ด ์๋์จ๋ค๋ฉด ์์๋ก ์ ์ํ๋ค. ํด๋น ์๊น์ง ๋ชจ๋ ํ์ธํด์ผํ๋ฏ๋ก ์๊ฐ๋ณต์ก๋๋ O(N)์ด ๋๊ณ , ๊ฐ์ฅ ์์ด์ ์ธ ๋ฐฉ๋ฒ์ด๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
|
public class Main {
public static boolean isPrime(int num){
for(int i=2; i<num; i++){
if(num % i == 0) return false;
}
return true;
}
public static void main(String[] args) {
System.out.println(isPrime(80));
System.out.println(isPrime(79));
}
}
|
ํ์ด2
๋๋ฒ์งธ๋ ํด๋น์ซ์์ ์ ๋ฐ๊น์ง๋ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด ์๋ฆฌ๋ ์ ๋ฐ ์ด์์ ์ซ์๋ค์ ํ์ธ์ด ํ์ ์๋ ์ซ์๋ค์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ฅผ๋ค์ด 80์ด๋ ์ซ์์์ ์๊ธฐ์์ ์ ์ ์ธํ๊ณ ์ ๋ฐ์ ์ด๊ณผํ๋ ์ซ์์์ ๋๋ด์๋ ๋๋จธ์ง๊ฐ 0์ด๋๋ ์ซ์๋ ๋์ฌ์๊ฐ ์๋ค. ํด๋น ํ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ต๋ N/2๋ฒ ์กฐํ๋ฅผ ํ๋ค. ์๊ฐ๋ณต์ก๋์์ ์์๋ ์ ์ธํ๋ฏ๋ก ํด๋น ํ์ด์ ์๊ฐ๋ณต์ก๋๋ O(N)์ด ๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
|
public class Main {
public static boolean isPrime(int num){
for(int i=2; i<=num/2; i++){
if(num % i == 0) return false;
}
return true;
}
public static void main(String[] args) {
System.out.println(isPrime(80));
System.out.println(isPrime(79));
}
}
|
ํ์ด3
๋ง์ง๋ง ํ์ด๋ ๋๋ฒ์งธ ํ์ด์ ์๋ฆฌ๋ฅผ ์กฐ๊ธ ์ธ์ฉํด์ ์์๋ฅผ ํ๋ณํ๋ ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ํด๋น ์ซ์์ √N ๊น์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด ์๋ฆฌ๋ ์ฝ์์ ์ค์ฌ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์๋ฅผ๋ค์ด 80์ ์ฝ์๋ ์๋์ ๊ฐ๋ค.
1, 2, 4, 5, 8, 10, 16, 20, 40, 80 |
๊ฐ ์ซ์๋ค์ ๊ณฑ์ด 80์ด๋๋ ์์ ๊ฐ์ ์์ผ๋ก ํ์ํ๋ค. 1:80, 2:40, 4:20, 5:16, 8:10. √80์ ๊ฐ์ ๋๋ต 8.xxx์ ๊ฐ์ด ๋์จ๋ค. ์ฆ ์ฝ์๋ค์ ๊ณฑ์ผ๋ก ๋ดค์๋ ๋ฃจํธ๋ฅผ ์์ด ๊ฐ์ด ์ค๊ฐ๊ฐ์ด ๋๋ค. ์ด ์๋ฆฌ๋ ์ด์ฉํ์ฌ 2์์๋ถํฐ √N์ ๊ฐ๊น์ง ๊ฒ์์ํ๋ค๋ฉฐ ์ดํ์ ๊ฐ์ ํ์ธํ ํ์๊ฐ ์๊ฒ ๋๊ณ ์๊ฐ๋ณต์ก๋๋ O(√N)์ด ๋๋ค. ์ฝ๋์ ๊ฐ๋ ์ฑ์ ์ํด ๋ฃจํธํจ์๋ ์ฌ์ฉํ์ง ์๊ณ i์ ์ ๊ณฑ๊ฐ์ผ๋ก ํ์ธ์ํ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
|
public class Main {
public static boolean isPrime(int num){
for(int i=2; i*i<=num; i++){
if(num % i == 0) return false;
}
return true;
}
public static void main(String[] args) {
System.out.println(isPrime(80));
System.out.println(isPrime(79));
}
}
|
๋ฐฑ์ค 1978๋ฒ ๋ฌธ์ :: ์์ ์ฐพ๊ธฐ
ํ์ด
์์๋ฅผ ๊ตฌํ๋ ๋ฉ์๋๋ฅผ ํจ๋ค์ด์ ์์์ธ์ง ํ๋์ฉ ํ์ธํ๋ค.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public class Main{
public static boolean isPrime(int num){
if(num < 2) return false;
for(int i=2; i*i<=num; i++){
if(num % i == 0) return false;
}
return true;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
int result = 0;
for(int i=0; i<T; i++){
int num = sc.nextInt();
if(isPrime(num)) result++;
}
System.out.println(result);
}
}
|
๋๊ธ