如何在短时间内找出一个数字是一个数字和它的polindrom的总和

时间:2016-12-29 08:35:00

标签: c primes

我想编写一个程序来查找小于特定数字的所有数字,它们等于数字和它的polindrome的总和。这是我的代码,它可以正常工作,但需要很长时间。我该怎么办?要减少它的时间吗?

#include<stdio.h>

long long int isprime(long long int b)
{
    long long int i,m;
    for(i=2;i*i<=b;i++)
    {
        if(b%i==0)
        {
            return 0;

        }
    }
        return 1;
}

long long int m(long long int a){
    long long int l=0;
        while (a>0){
        l=l*10+(a%10);
        a/=10;
    }
    return l;
}

int main(){
    long long int i = 0,cnt = 0,a= 0,num;
    scanf("%lld",&a);
    for (i=2;i<=a; i++){
        if (isprime(i) == 1){
            for (num=1;num<i; num++){
            if (num == m(i-num)){
                cnt ++;
                break;
                //printf("%d\n",i);

            }
        }
        }
    }
    printf("%lld", cnt);
}

0 个答案:

没有答案