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;
}