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