백준 알고리즘
[Silver III] 소수 구하기 - 1929
성능 요약
메모리: 13668 KB, 시간: 188 ms
분류
수학(math), 정수론(number_theory), 소수 판정(primality_test), 에라토스테네스의 체(sieve)
문제 설명
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
Code
1
2
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
use std::fmt::Write;
use std::io;
fn find_prime_num(n: i32) -> i32 {
let mut i = 2;
if n < 2 {
return 0;
} else {
while i <= (n / i) {
if n % i == 0 {
return 0;
}
i = i + 1;
}
return 1;
}
}
fn main() {
let mut input_a = String::new();
io::stdin().read_line(&mut input_a).unwrap();
let v: Vec<i32> = input_a
.split_whitespace()
.map(|x| -> i32 { x.parse().unwrap() })
.collect();
let mut a = v[0].clone();
let b = v[1].clone();
let mut output = String::new();
while a <= b {
if find_prime_num(a) == 1 {
writeln!(output, "{}", a).unwrap();
}
a = a + 1;
}
print!("{}", output);
}