Voici un court passage d'un test d'analyse de droite à gauche pour un seul nombre utilisant des entiers et non des chaînes. Mais non testé:
int left_digits = n*n;
int right_digits = 0;
int next_right_digit_multiplier = 1;
while ((left_digits > 0) && (right_digits < n))
{
if ((left_digits + right_digits) == n)
{
return true;
}
int next_digit = left_digits % 10;
left_digits /= 10;
right_digits += (next_digit * next_right_digit_multiplier);
next_right_digit_multiplier *= 10;
}
return false;
Notez qu'il serait sans doute préférable de trouver une théorie ici aussi si vous commencez à travailler avec des chiffres vraiment grands, par exemple ne tester que les rares cas où aucun des deux côtés n'a plus de chiffres que n (en ignorant les zéros en tête!).
Est-ce un devoir? –
comme on vous l'a répété plusieurs fois, ce n'est pas un site de questions-réponses sur les mathématiques. –
@Neil: On dirait qu'il demande un algorithme que je pourrais voir comme étant lié à la programmation, mais je ne connais pas son passé d'infractions passées :) –