Submission
Status:
--------------------
Subtask/Task Score:
0/100
Score: 0
User: Prap
Problemset: จำนวนเฉพาะก่อนหน้า
Language: cpp
Time: 0.003 second
Submitted On: 2026-04-21 17:09:11
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
// ฟังก์ชันสำหรับเช็คว่าเป็นจำนวนเฉพาะหรือไม่
bool isPrime(long long n) {
if (n <= 1) return false;
if (n <= 3) return true;
if (n % 2 == 0 || n % 3 == 0) return false;
// เช็คโดยใช้หลักการว่าจำนวนเฉพาะที่มากกว่า 3 จะอยู่ในรูป 6k ± 1
for (long long i = 5; i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0)
return false;
}
return true;
}
int main() {
long long N;
if (!(cin >> N)) return 0;
vector<long long> primes;
// เริ่มหาจาก N-1 ถอยหลังลงมา
for (long long i = N - 1; i >= 2; i--) {
if (isPrime(i)) {
primes.push_back(i);
}
// ถ้าได้ครบ 5 จำนวนแล้ว ให้หยุดลูป
if (primes.size() == 5) {
break;
}
}
// แสดงผลลัพธ์ (เรียงจากมากไปน้อยตามที่หาได้)
for (int i = 0; i < primes.size(); i++) {
cout << primes[i] << (i == primes.size() - 1 ? "" : " ");
}
cout << endl;
return 0;
}