01/10/2018, 12:07

Quá thời gian khi tìm số nguyên tố đảo

em không biết em đăng post có đúng không nhưng hãy chỉ giáo em với … em có đề bài này và giải gặp lỗi Time Limit Exceeded các cao nhân giúp em được không ạ ? . em xin cảm ơn
Có một vài số nguyên tố khi viết đảo lại nó cũng là số nguyên tố. Ví dụ như 17 hay 71 đều là số nguyên tố. Cho hai số a và b hãy tìm xem có bao nhiêu số x nằm trong đoạn [a, b] sao cho khi viết xuôi hay viết đảo số đó đều là số nguyên tố.
INPUT : hai số nguyên dương a, b (a <= b)
OUTPUT : Số lượng số x

coce của em :

using namespace std;
int sdn(int n)
{
    int k=0;
    while(n!=0){
    k=k*10+n%10;
    n/=10;
    }
    return k;
}
 
bool kt(int N)
{
    if (N<2) return false;
    if ((N!=2)&&(N%2==0)) return false;
    for (int i = 2; i <= N/2; i++)
    {
        if (N % i == 0)
            return false;
    }
    return true;
}
 
int main()
{
    int i,a,b,s=0;
    cin>>a>>b;
    for(i=a;i<=b;++i){
       if(kt(i) && kt(sdn(i)))
            s+=1;
    }
    cout<<s;
    return 0;
}
HK boy viết 14:23 ngày 01/10/2018

for (int i = 2; i <= N/2; i++)

Chạy đến sqrt(N) là đủ rồi.

rogp10 viết 14:20 ngày 01/10/2018

Có thể loại theo dải số bắt đầu bằng 2, 4, 6, 8. Sau đó chia thành từng đoạn để sàng.

Coi vậy chứ bài này nhiều đường tính.

Bài liên quan
0