Tìm số n mới từ số nguyên dương cho trước

12
Lập trình C++

Bài toán: Cho số nguyên dương N. Người ta có thể cắt lần lượt các chữ số của N từ phải sang trái để thu được số N mới.
Hãy tìm số N mới là số nguyên tố lớn nhất. Biết phải cắt ít nhất 1 số. Nếu không có ghi ra -1.

Ví dụ: N = 1124 N = 11.

Code tham khảo:

#include <iostream>
using namespace std;
bool snt (int64_t n) {
    if (n <= 1) {
        return false;
    }
    if (n == 2 || n == 3) {
        return true;
    }
    int i = 5;
    while (i * i <= n) {
        if (n % i == 0 || n % (i+2) == 0)
            return false;
        i++;
    }
    return true;
}
int main() {
    freopen("NUMBERC.INP","r",stdin);
    freopen("NUMBERC.OUT","w",stdout);
    int64_t n;
    cin >> n;
    while (n / 10 > 0) {
        n /= 10;
        if (snt(n)) {
            cout << n;
            break;
        }
    }
    return 0;
}