大佬求助,所有测试点都超时了,该怎么优化
查看原帖
大佬求助,所有测试点都超时了,该怎么优化
802397
229074393haishuo楼主2022/10/19 23:07

制造回文数是按着题目中的提示来的, 但是全都超时了,求救

#include<stdio.h>
long isz(long x)
{
    for (int i = 2; i < x; i++) 
    {
        if (x % i == 0)
        {
            return 0;
            break;
        }
    }
    return 1;
}
int main()
{
int  d1,d2,d3,d4,a,b,i=0,n=0;
long palindrome[11111],ans[10000];
scanf("%d%d", &a, &b);
    for (d1 = 1; d1 <= 9; d1 += 2)
    {    // 只有奇数才会是素数    
        palindrome[i] =  d1;//(处理回文数...)
        i++;
    }

    for (d1 = 1; d1 <= 9; d1 += 2)
    {    // 只有奇数才会是素数    
               palindrome[i] =  10 * d1 + d1;//(处理回文数...)
                i++;          
    }
    for (d1 = 1; d1 <= 9; d1 += 2)
    {    // 只有奇数才会是素数
        for (d2 = 0; d2 <= 9; d2++)
        {
            
                palindrome[i] =  100 * d1 + 10 * d2 +  d1 ;//(处理回文数...)
                i++;
           
        }
    }
    for (d1 = 1; d1 <= 9; d1 += 2)
    {    // 只有奇数才会是素数
        for (d2 = 0; d2 <= 9; d2++)
        {
            
                palindrome[i] =  1000 * d1 + 100 * d2 + 10 * d2 + d1;//(处理回文数...)
                i++;
            
        }
    }
    for (d1 = 1; d1 <= 9; d1 += 2) 
    {    // 只有奇数才会是素数
        for (d2 = 0; d2 <= 9; d2++)
        {
            for (d3 = 0; d3 <= 9; d3++) 
            {
                palindrome[i] = 10000 * d1 + 1000 * d2 + 100 * d3 + 10 * d2 + d1;//(处理回文数...)
                i++;
            }
        }
    }
    for (d1 = 1; d1 <= 9; d1 += 2)
    {    // 只有奇数才会是素数
        for (d2 = 0; d2 <= 9; d2++)
        {
            for (d3 = 0; d3 <= 9; d3++)
            {
                palindrome[i] = 100000 * d1 + 10000 * d2 + 1000 * d3 + 100 * d3 + 10*d2+d1;//(处理回文数...)
                i++;
            }
        }
    }
    for (d1 = 1; d1 <= 9; d1 += 2)
    {    // 只有奇数才会是素数
        for (d2 = 0; d2 <= 9; d2++)
        {
            for (d3 = 0; d3 <= 9; d3++)
            {
                for (d4 = 0; d4 <= 9; d4++)
                {
                    palindrome[i] = 1000000 * d1 + 100000 * d2 + 10000 * d3 +1000*d4+ 100 * d3 + 10 * d2 + d1;//(处理回文数...)
                    i++;
                }
            }
        }
    }
    for (d1 = 1; d1 <= 9; d1 += 2)
    {    // 只有奇数才会是素数
        for (d2 = 0; d2 <= 9; d2++)
        {
            for (d3 = 0; d3 <= 9; d3++)
            {
                for (d4 = 0; d4 <= 9; d4++)
                {
                    palindrome[i] = 10000000 * d1 + 1000000 * d2 + 100000 * d3 + 10000 * d4 + 1000 * d4 + 100 * d3 +10*d2+d1;//(处理回文数...)
                    i++;
                }
            }
        }
    }
    for (int j = 0; j < 11111; j++)
    {
        if (isz(palindrome[j])) 
        {
            ans[n] = palindrome[j];
            n++;
        }
    }
    for (int j = 0; j < n - 1; j++)
        printf("%ld\n", ans[j]);
		return 0;
}```
2022/10/19 23:07
加载中...