Палиндром, оптимизировать код - 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);