Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Nguồn bài:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch
Cho số tự nhiên N. Nhiệm vụ của bạn là in ra ước số nguyên tố nhỏ nhất của các số từ 1 đến N.
Ước số nguyên tố nhỏ nhất của 1 là 1. Ước số nguyên tố nhỏ nhất của các số chẵn là 2. Ước số nguyên tố nhỏ nhất của các số nguyên tố là chính nó.
Gợi ý : Đối với số N duyệt từ 2 tới √N nếu gặp số mà N chia hết => Đây chính là ước nguyên tố nhỏ nhất, còn nếu không gặp thì N là số nguyên tố nên bạn return N
Đầu vào
Dòng duy nhất chứa số nguyên dương N
Giới hạn
1≤N≤100000
Đầu ra
Đưa ra kết quả theo từng dòng
Ví dụ :
Input 01
6
Output 01
1
2
3
2
5
2
Bình luận
include <iostream>
include <vector>
include <stdexcept>
using i32 = int; using vi32 = std::vector<i32>;
class PrimeFactorSolver { public: explicit PrimeFactorSolver(i32 upperbound) : n(upperbound) { if (n < 1 || n > 100000) throw std::invalid_argument("N must be in range [1, 100000]"); spf.assign(n + 1, 0); }
private: i32 n; vi32 spf; };
i32 main() { std::ios::syncwithstdio(false); std::cin.tie(nullptr);
}