컴퓨터 과학/자료구조, 알고리즘
[Rust로 백준 하루 하나] 9-4. 소수 찾기
sans2
2024. 9. 7. 13:43
문제 (1978번)
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
풀이
코드
use std::io;
fn main() {
let mut n = String::new();
io::stdin().read_line(&mut n).unwrap();
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
let input: Vec<&str> = input.split_whitespace().collect();
let mut count = 0;
for i in input {
let x: i32 = i.trim().parse().unwrap();
if is_prime(x) { count += 1 }
}
println!("{}", count);
}
fn is_prime(num: i32) -> bool {
if num <= 1 {
false
} else {
for n in 2..=num/2 {
if num % n == 0 { return false; }
}
true
}
}
해설
특이사항 없음
추가 학습
fn is_prime(num: i32) -> bool {
[...]
for n in 2..=num/2 {
if num % n == 0 { return false; }
}
[...]
}
여기만 return false;
가 아닌 false
로 하면 반환이 안되는 오류가 나오던데 이유가 뭘까?