Số siêu nguyên tố – Code C++ và Pascal

Like Tweet Pin it Share Share Email

Một số tự nhiên N được gọi là siêu nguyên tố nếu bản thân nó là một số nguyên tố
và tất cả các số thu được bằng cách xóa lần lượt các chữ số bên phải của nó đều là số nguyên tố.

Ví dụ:

Số 317 là một số siêu nguyên tố vì: 317 là 1 số nguyên tố

Xóa 1 chữ số bên phải: 31 là 1 số nguyên tố

Xóa 2 chữ số bên phải: 3 là 1 số nguyên tố

Cho 2 số nguyên a, b. Hãy liệt kê tất cả các số siêu nguyên tố thuộc đoạn [a, b].

Input: Tệp SPRIME.INP gồm một dòng ghi 2 số nguyên dương a, b (0<a,b <107)

Output: Tệp SPRIME.OUT liệt kê theo thứ tự tăng các số siêu nguyên tố thuộc đoạn [a, b], mỗi số trên một dòng, hoặc ghi “NO” trong trường hợp không có số nào thuộc
đoạn đó.

Ví dụ

 

SPRIME.INP SPRIME.OUT
3 57 3

5

7

23

29

31

37

53

Code trong C++

#include <bits/stdc++.h>
using namespace std;
bool nt[10000005];
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int a,b;
freopen("sprime.inp","r",stdin);
	freopen("sprime.out","w",stdout);
    cin>>a>>b;
    for (int i=1;i<=b;i++) nt[i]=1;
    nt[1]=0;
    for (int i=2;i<=sqrt(b);i++)
        if (nt[i]==1)
        {
            int j=i*i;
            while (j<=b)
            {
                    nt[j]=0;
                    j+=i;
            }
        }
    for (int i=a;i<=b;i++)
    {
        bool ok=1;
        int p=i;
        while (p>0)
            if(nt[p]==0)
            {
                ok=0;
                break;
            }
            else p=p/10;
        if (ok==1) cout<<i<<endl;
    }
    return 0;
}

Code trong Pascal

 

Comments (0)

Trả lời

Your email address will not be published. Required fields are marked *