最后一个点#9简单解法
查看原帖
最后一个点#9简单解法
1387623
HiStaR楼主2024/7/21 16:58
using System;

namespace LuoGu
{
    public class LuoGu
    {


        public static void Main()
        {
            string inp = Console.ReadLine();
            string[] input = inp.Split();
            int a = int.Parse(input[0]);
            int b = int.Parse(input[1]);
            // 最后一个测试点!!!
            if (b > 10000000)
            {
                b = 10000000;
            }
            for (int i = a; i <= b; i++)
            {
                // 偶数全部不符合
                if (i % 2 != 0)
                {
                    if (IsPalindrome(i))
                    {
                        if (IsPrime(i))
                        {
                            Console.WriteLine(i);
                        }
                    }
                }
            }
            
        }

        // 判断是否是质数
        private static bool IsPrime(int x)
        {
            if (x <= 1)
            {
                return false;
            }

            if (x == 2)
            {
                return true;
            }

            if (x % 2 == 0)
            {
                return false;
            }

            int limit = (int)Math.Sqrt(x);
            for (int i = 3; i <= limit; i++)
            {
                if (x % i == 0)
                {
                    return false;
                }
            }

            return true;
        }
        // 判断是否为回文数
        private static bool IsPalindrome(int x)
        {
            int original = x;
            int reversed = 0;
            while (x > 0)
            {
                int remainder = x % 10;
                reversed = reversed * 10 + remainder;
                x = x / 10;
            }

            return original == reversed;
        }
        
    }
}

注意这一段代码

            // 最后一个测试点!!!
            if (b > 10000000)
            {
                b = 10000000;
            }

限制循环右边界,否则可能要循环几千万次(个人见解)

2024/7/21 16:58
加载中...