![]() |
Il suffit de remarquer que m2 - (m+1)2 - (m+2)2 + (m+3)2 ne dépend pas de m et vaut 4. Or on a 0 = 12 + 22 - 32 + 42 - 52 - 62 + 72, 1 = 12, 2 = -12 - 22 - 32 + 42 et 3 = -12 + 22. |
Ainsi si q est le quotient et r le reste de la division de N par 4, une écriture possible de N se construit en ajoutant à la décomposition de r q fois une somme du type m2 + (m+1)2 + (m+2)2 + (m+3)2. Cela donne un programme beaucoup plus rapide mais des sommes beaucoup plus longues que celles obtenues par le programme précédent.
Le programme ci-contre utilise des chaînes de caractères ne comportant que des 0 ou des 1, 1pour coder le symbole + et 0 pour coder le symbole -.