求助!C语言

P1217 [USACO1.5] 回文质数 Prime Palindromes

Spirit_ZeroHeart @ 2023-10-29 16:26:00

求助,这个程序还能怎么改进,就差最后一个测试点了

#include<stdio.h>
#include<math.h> 
int main()
{
    int a,b,z=0,dz=0,j=2;
    scanf("%d %d",&a,&b);

   for(int i=a;i<=b;i++)
   {
    if(i%2!=0)     //偶数一定不是质数 
    {
        z=i; 
        dz=0;
        while(z!=0)     
        {
            dz=dz*10+z%10;
            z/=10;
        }
        if(dz==i)     //判断是否是回文数 
        {
            for(j=2;j<=sqrt(i);j++)
            {
                if(i%j==0)
                 break;
            }
            if(j>sqrt(i))    //判断是否是质数 
             printf("%d\n",i);
        }
    }
   }
   return 0; 
}

by 1612855242ytq @ 2023-10-29 16:46:12

两层循环可以直接把偶数删掉,

i=a%2?a:a+1,i<=b,i+=2

j=3,j*j<=i,j+=2


by 1612855242ytq @ 2023-10-29 16:48:27

如果还是不行可以换个思路,直接构造回文数


by Spirit_ZeroHeart @ 2023-10-30 08:01:45

@1612855242ytq 还是不行哈哈,我去试试构造回文数,谢谢大佬了


by 1612855242ytq @ 2023-10-31 19:46:36

@Spirit_ZeroHeart 构造回文数会快很多,反正最多八位数,写个循环就行了


|