Επίλυση του προβλήματος 4 του Project Euler
Στο παρόν άρθρο, θα εξετάσουμε την επίλυση του τέταρτου προβλήματος του Project Euler, ένα πρόβλημα που απαιτεί να βρεθεί το μεγαλύτερο παλίνδρομο γινόμενο τριψήφιων αριθμών.
Αλγόριθμος Επίλυσης
Για να επιλύσουμε το πρόβλημα, χρησιμοποιούμε έναν απλό αλγόριθμο που περιλαμβάνει τα εξής βήματα:
- Αρχικοποιούμε δύο μεταβλητές για την αποθήκευση του μεγαλύτερου παλινδρομικού γινομένου και των δύο αριθμών που το παράγουν.
- Ξεκινάμε με δύο βρόχους επανάληψης για την παραγωγή όλων των πιθανών γινομένων δύο τριψήφιων αριθμών.
- Ελέγχουμε αν το γινόμενο είναι παλίνδρομο. Αν είναι, ελέγχουμε αν είναι μεγαλύτερο από το προηγούμενο μεγαλύτερο παλίνδρομο γινόμενο και, αν ναι, το ενημερώνουμε μαζί με τους αριθμούς που το παράγουν.
Παρακάτω παρουσιάζεται ο κώδικας σε γλώσσα C που υλοποιεί τον παραπάνω αλγόριθμο:
#include <stdio.h>
int isPalindrome(int number) {
int reversedNumber = 0;
int tempNumber = number;
while (tempNumber > 0) {
reversedNumber = reversedNumber * 10 + tempNumber % 10;
tempNumber /= 10;
}
return number == reversedNumber;
}
int main() {
int largestPalindrome = 0;
int factor1 = 0;
int factor2 = 0;
for (int i = 100; i <= 999; i++) {
for (int j = 100; j <= 999; j++) {
int product = i * j;
if (isPalindrome(product) && product > largestPalindrome) {
largestPalindrome = product;
factor1 = i;
factor2 = j;
}
}
}
printf("Το μεγαλύτερο παλίνδρομο γινόμενο τριψήφιων αριθμών είναι: %d\n", largestPalindrome);
printf("Το παλίνδρομο γινόμενο προκύπτει από τον πολλαπλασιασμό των αριθμών: %d * %d\n", factor1, factor2);
return 0;
}
Με την εφαρμογή του παραπάνω αλγορίθμου, καταφέρνουμε να επιλύσουμε το τέταρτο πρόβλημα του Project Euler και να βρούμε το μεγαλύτερο παλίνδρομο γινόμενο τριψήφιων αριθμών.
Comments
Post a Comment