C'est que ma petite sieste m'a fait le plus grand bien
Ce n'est qu'un premier jet. Les versions HP-15C, Fx-602p ou TI-57 LCD restent encore à élaborer.
Voici un code plus abouti qui permet de résoudre tout type d'équation diophantienne en X,Y :
Le code est en quatre parties :
-ligne 1 et 2 - PARAMETRES
On y code l'équation sous la forme 1:E= «expression en X» - «membre en Y» [ENTER]
En ligne 2:, on peut modifier la précision de résultats, plus P est grand, plus la précision est grande et les temps de recherche longs.
-Ligne 6 à 9 - sous programmes pour recherche par dichotomie
-Ligne 10 à 12 - Recherche de Y pour X donné par l'utilisateur
L'appel se fait par DEF+X après avoir saisi la valeur donnée pour X
-Ligne 20 à 22 - Recherche de X pour Y donné par l'utilisateur
L'appel se fait par DEF+C (la touche Y ne peut pas servir en mode DEF) après avoir saisi la valeur donnée pour Y.
Cette dernière partie est identique à la précèdente.
Il y a donc de quoi optimiser ici aussi (j'ai une petite idée, X et Y sont respactivement A(24) et A(25) - héhéhé
Code : Tout sélectionner
6:A=Y,C=X,F=E:RETURN
7:BEEP 1:PRINT X,Y:RETURN
8:B=Y,D=X,G=E:RETURN
Code : Tout sélectionner
10 "X" AREAD X : Y=0 :GOSUB 1:A=Y,F=E,Y= €6 : GOSUB 1:B=Y,G=E
11 IF SGN FG>0 BEEP 3:PRINT "NO SOL. AT X=";X:END
12 Y=(A+B)/2: IF PB-PA>1 GOSUB 1:GOSUB 7+SGN E:GOTO 11
13 BEEP 2:PRINT "APPROX.",Y:END
Code : Tout sélectionner
20 "C" AREAD Y: X= 1 :GOSUB 1:C=X,F=E,X=31:GOSUB 1:D=X,G=E
21 IF SGN FG>0 BEEP 3:PRINT "NO SOL. AT Y=";Y:END
22 X=(C+D)/2:IF PD-PC>1GOSUB 1:GOSUB 7-SGN E:GOTO 21
23 BEEP 2:PRINT "APPROX.",X:END