Witam,
Chcę napisać program który wyszukuję liczby pierwsze w podanym zakresie, następnie mnoży każdą poszczególną liczbę przez siebie i na samym końcu wśród tych liczb wyszukuje i zwraca największą, która jest palindromem.Problem z programem, który napisałem polega na tym, że w pewnym zakresie liczby są na minusie i nie bardzo wiem dlaczego. Również zwrócony wynik jest błędny. W momencie kiedy primesList.Add(i * i); zostawię primesList.Add(i); program generuje liczby poprawnie, ale nie spełnia założonych wymagań. Poniżej cały kod. Z góry dziękuję za pomoc.
class Program
{
public static int MAX = 100000;
static void Main(string[] args)
{
List<int> primes = getDoubledPrimes(MAX);
List<int> palindromesList = new List<int>();
foreach (int i in primes)
{
bool palindrome = IsPalindrome(i);
if (palindrome)
{
palindromesList.Add(i);
}
}
foreach(int p in palindromesList)
{
int maxValue = palindromesList.Max();
Console.WriteLine("This is the biggest palindrome: " + maxValue);
break;
}
Console.ReadKey();
}
static List<int> getDoubledPrimes(int max)
{
List<int> primesList = new List<int>();
bool isPrime = true;
for (int i = 2; i < max; i++)
{
for (int j = 2; j < i / 2; j++)
{
if (i % j == 0)
{
isPrime = false;
break;
}
}
if (isPrime)
{
primesList.Add(i * i);
}
isPrime = true;
}
return primesList;
}
public static bool IsPalindrome(int num)
{
int n = num;
int rev = 0;
while (n > 0)
{
int dig = n % 10;
rev = rev * 10 + dig;
n = n / 10;
}
return num == rev;
}
}
}