Nombre palindrome le plus grand
- Par Aur36
- Publié le 12 juillet 2021
- Licence CC BY-SA 4.0
Énoncé
Un nombre palindrome est un nombre qui se lit de la même façon dans les deux sens. Le plus grand nombre palindrome obtenu à partir du produit de deux nombres à deux chiffres est 9009 = 91 × 99.
Trouvez le nombre palindrome le plus grand avec le produit de deux nombres à trois chiffres.
Travaux réalisés
Mon code (Zig)
const std = @import("std");
const Palindrome = struct {
i: usize = 0,
j: usize = 0,
result: usize = 0,
pub fn init(i: usize, j: usize, result: usize) Palindrome {
return Palindrome {
.i = i,
.j = j,
.result = result,
};
}
};
pub fn main() !void {
const stdout = std.io.getStdOut().writer();
var pal = Palindrome {};
var i: usize = 100;
while (i <= 999) {
var j: usize = 100;
while (j <= 999) {
const result = i * j;
const is_pal = is_palindrome(result);
if (is_pal and result > pal.result) {
pal = Palindrome.init(i, j, result);
}
j += 1;
}
i += 1;
}
try stdout.print("{d}\n", .{pal});
}
// @see https://www.educative.io/edpresso/how-to-check-if-a-number-is-palindrome
//
// @todo Traiter le cas de « 0 » correctement.
pub fn is_palindrome(givenNumber: usize) bool {
var copyNumber: usize = givenNumber;
var currentDigit: usize = 0;
var reversedNumber: usize = 0;
while (copyNumber != 0) {
currentDigit = copyNumber % 10;
reversedNumber = (reversedNumber * 10) + currentDigit;
copyNumber = copyNumber / 10;
}
if (givenNumber == reversedNumber) {
return true;
} else {
return false;
}
}
Mon code (Nim)
type
Palindrome = tuple
i: int
j: int
result: int
proc is_palindrome(given_number: int): bool =
var copy_number = given_number
var current_digit = 0
var reversed_number = 0
while copy_number != 0:
current_digit = copy_number %% 10
reversed_number = (reversed_number * 10) + current_digit;
copy_number = int(copy_number / 10)
return given_number == reversed_number
proc get_max_pal(): Palindrome =
var pal: Palindrome = (i: 0, j: 0, result: 0)
var i = 100
while i <= 999:
var j = 100
while j <= 999:
var result = i * j
var is_pal = is_palindrome(result)
if is_pal and result > pal.result:
pal = (i: i, j: j, result: result)
j += 1
i += 1
return pal
const
max_pal = get_max_pal()
echo max_pal