Палиндром, оптимизировать код - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д