En Base-10, tous les carrés parfaits se terminent par 0 , 1 , 4 , 5 , 6 ou 9 .
En Base-16, tous les carrés parfaits se terminent par 0 , 1 , 4 ou 9 .
Nilknarf décrit pourquoi c'est et comment cela fonctionne très bien dans cette réponse, mais je vais également donner une brève description ici:
Lors de la mise au carré d'un nombre Base-10, N , le chiffre "un" n'est pas affecté par ce qui est dans le chiffre "dizaines" ou le chiffre "centaines", et ainsi de suite. Seul le chiffre "uns" dans N affecte le chiffre "uns" dans N 2 , donc un moyen facile (mais peut-être pas le plus golfique) de trouver tous les derniers chiffres possibles pour N 2 est de trouver n 2 mod 10 pour tous 0 <= n < 10 . Chaque résultat est un dernier chiffre possible. Pour Base-m, vous pouvez trouver n 2 mod m pour tous les 0 <= n < m .
Écrivez un programme qui, quand on lui donne l'entrée N , sort tous les derniers chiffres possibles pour un carré parfait en Base-N (sans doublons). Vous pouvez supposer que N est supérieur à 0 et que N est suffisamment petit pour que N 2 ne déborde pas (si vous pouvez tester jusqu'à N 2 , je vous donnerai une quantité finie de points brownie, mais sachez que le taux de change des points brownie en points réels est de l'infini à un).
Tests:
Input -> Output
1 -> 0
2 -> 0,1
10 -> 0,1,5,6,4,9
16 -> 0,1,4,9
31 -> 0,1,2,4,5,7,8,9,10,14,16,18,19,20,25,28
120 -> 0,1,4,9,16,24,25,36,40,49,60,64,76,81,84,96,100,105
c'est du code-golf , donc des règles standards s'appliquent!
(Si vous trouvez cela trop facile, ou si vous voulez une question plus approfondie sur le sujet, considérez cette question: Couverture minimale des bases pour les tests de résidus quadratiques de l'équerrage ).