c语言 指定范围内的回文素数,要求1S内完成的

1个回答

  • #include

    #include

    #include

    #include

    #include

    #pragma comment(lib,"Winmm.lib")

    //

    //判断素数,稍有改建,miller_rabin算法在算1亿以内的数不如这个经典的算法快

    bool IsPrime(long n)

    {

    long i=sqrt(n);

    for(i;i>=7;i--)

    if(n%i==0)

    {

    return false;

    }

    return true;

    }

    //回文数判断经典算法

    bool IsPalindrome(long m)

    {

    long i, n;

    i=m;

    n=0;

    while(i)

    {

    n=n*10+i%10;

    i/=10;

    }

    return m==n; //返回true说明就是回文数了.

    }

    ////////////////////////////////////////////////////

    //*

    long Arry[6000];//顺序表存储读取的回文数

    int ptr;//指针

    int main()

    {

    time_t start,finish,r;

    long i;

    long count=0;

    FILE* fp;

    if(!(fp=fopen("data.txt","r")))

    {

    printf("记录回文数的文件无法打开,请检查是否存在n");

    return 0;

    }

    ptr=0;

    while(!feof(fp))

    {

    fscanf(fp,"%ld",Arry+ptr);

    ptr++;

    }

    ptr-=1;//多弄出来1个记录

    start=timeGetTime();

    for(i=0;i