Палиндром, оптимизировать код - C#

Узнай цену своей работы

Формулировка задачи:

Задание выглядело так: Напишите программу, которая возвращает наибольшее число палиндром, которое является произведением двух простых пятизначных чисел, а также возвращает сами сомножители.

Каким образом оптимизировать код и ответ, который не является перемножением чисел?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Prosto
    {
        public bool isPrime(int x)
        {
            for (int i = 2; i < x / 2 + 1; i++)
            {
                if ((x % i) == 0) return false;
            }
            return true;
        }
    }
    class Program
    {
        static int ObtratnoeChislo(int n)
        {
            int obr = 0;
            while (n > 0)
            {
                obr = 10 * obr + n % 10;
                n /= 10;
            }
            return obr;
        }
        static void Main(string[] args)
        {
            int otv = 0;
            Prosto pr = new Prosto();
            for (int i = 99000; i < 100000; i++)
            {
                for (int j = 99000; j < 100000; j++)
                {
                    if (pr.isPrime(i) && pr.isPrime(j))
                    {
                        otv = i * j;
                        if (otv == ObtratnoeChislo(otv))
                        {
                            Console.WriteLine(i + " " + j);
                            break;
                        }
                        else otv = 0;
                    }
                }
                if (otv != 0) break;
            }
            Console.WriteLine(otv);
            Console.ReadKey();
        }
    }
}
Поменял тип на ulong, чтобы результат не выходил за пределы. Но вот с производительностью, каким образом можно повысить результат вычисления максимального палиндрома?

Решение задачи: «Палиндром, оптимизировать код»

textual
Листинг программы
var primes = FillSieve(99999).Where(n => n > 9999).Select(n => (ulong)n);

Оцени полезность:

11   голосов , оценка 4.182 из 5