백준 1978 - 소수 찾기 [Rust]

[Silver V] 소수 찾기 - 1978

Posted by Hebi on April 5, 2023

백준 알고리즘

[Silver V] 소수 찾기 - 1978

문제 링크

성능 요약

메모리: 13152 KB, 시간: 8 ms

분류

수학(math), 정수론(number_theory), 소수 판정(primality_test), 에라토스테네스의 체(sieve)

문제 설명

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력

주어진 수들 중 소수의 개수를 출력한다.

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
use std::fmt::Write;
use std::io;

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 count = 0;
    let mut r = 0;
    let mut test = 0;
    let mut input_b = String::new();
    io::stdin().read_line(&mut input_b).unwrap();
    let v2: Vec<i32> = input_b
        .split_whitespace()
        .map(|x| -> i32 { x.parse().unwrap() })
        .collect();
    for i in 0..v[0] {
        for j in 1..v2[test] + 1 {
            if (v2[test] % j) == 0 {
                count += 1;
            }
        }
        if count == 2 {
            r += 1;
        }
        count = 0;
        test += 1;
    }
    println!("{}", r);
}