This documentation is automatically generated by online-judge-tools/verification-helper
View the Project on GitHub ruthen71/rcpl
#define PROBLEM "http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_1_C" #include <bits/stdc++.h> #include "math/osak.hpp" int main() { auto osak = Osak(100000000); int n; std::cin >> n; int ans = 0; for (int i = 0; i < n; i++) { int a; std::cin >> a; ans += osak.is_prime(a); } std::cout << ans << '\n'; return 0; }
#line 1 "verify/aoj_alds1/aoj_alds1_1_c_osa_k.test.cpp" #define PROBLEM "http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_1_C" #include <bits/stdc++.h> #line 2 "math/osak.hpp" struct Osak { int n; std::vector<int> min_factor; Osak(int n) : n(n), min_factor(n + 1) { std::iota(min_factor.begin(), min_factor.end(), 0); if (n >= 0) min_factor[0] = -1; if (n >= 1) min_factor[1] = -1; for (int p = 2; p * p <= n; p++) { if (min_factor[p] != p) continue; for (int i = p * p; i <= n; i += p) { if (min_factor[i] != i) continue; min_factor[i] = p; } } } bool is_prime(int x) { assert(x <= n); return min_factor[x] == x; } std::map<int, int> prime_factor(int x) { assert(x <= n); std::map<int, int> pf; while (x > 1) { pf[min_factor[x]]++; x /= min_factor[x]; } return pf; } }; #line 6 "verify/aoj_alds1/aoj_alds1_1_c_osa_k.test.cpp" int main() { auto osak = Osak(100000000); int n; std::cin >> n; int ans = 0; for (int i = 0; i < n; i++) { int a; std::cin >> a; ans += osak.is_prime(a); } std::cout << ans << '\n'; return 0; }