Submission
Status:
PPPPPPPPPPxPxPPPxPPx
Score: 80
User: Dormon
Problemset: จำนวนเฉพาะก่อนหน้า
Language: cpp
Time: 0.002 second
Submitted On: 2024-12-11 20:57:49
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <functional>
#include <queue>
#include <numeric>
#include <stack>
#include <cmath>
#define debug(...) Debug(#__VA_ARGS__, __VA_ARGS__)
using namespace std;
const bool TEST_CASE = 0;
template<typename T>
typename std::enable_if<std::is_integral<T>::value>::type
Debug(const char* name, T value) {
std::cout << name << " : " << value << '\n';
}
template<typename T> ostream& operator<<(ostream& out, vector<T>& a) {
for(auto &x : a) out << x << ' ';
return out;
};
template<typename T, typename... Args>
typename std::enable_if<std::is_integral<T>::value>::type
Debug(const char* names, T value, Args... args) {
const char* comma = strchr(names, ',');
std::cout.write(names, comma - names) << " : " << value << " | ";
Debug(comma + 1, args...);
}
void solve(){
int n;
cin >> n;
int m = sqrt(n) + 1;
vector<int> is_prime(m, true), prime;
is_prime[0] = is_prime[1] = false;
for (int i = 2;i <= m;i++){
if (!is_prime[i]) continue;
prime.push_back(i);
for (int j = i<<1;j <= m;j+=i)
is_prime[j] = false;
}
stack<int> ans;
int cnt = 0;
auto check_is_prime = [&](int i) -> bool {
for (auto e:prime)
if (i % e == 0)
return false;
return true;
};
for (int i = n-1;i >= 2 && cnt < 5;i--){
if (check_is_prime(i)){
ans.push(i);
cnt++;
}
}
while (!ans.empty()){
cout << ans.top() << ' ';
ans.pop();
}
}
int main()
{
#ifndef DORMON
ios_base::sync_with_stdio(0);
#endif
cin.tie(0);
int q = 1;
if (TEST_CASE) cin >> q;
while (q--){
solve();
}
}