| Nombres premiers [TI 82] |
| Auteur |
Message |
patate007
Autorisation : Membre
Nb de messages : 103
Inscrit le : Mar 09 Fév 2010, 8:49
|
Posté le : Mar 09 Fév 2010, 18:25
|
|
|
Bonsoir ! Je suis nouveau sur ce forum. J'ai 14 ans (je suis donc en 3e ) et je vais vous montrer un de mes programmes que j'ai réalisé sur la TI 82.
Il énumère tous les nombres premiers en partant de 5 (J'ai pas trouvé comment afficher le 1, 2 et 3 ...). Il prend 154 Octets.
J'ai 2 autres programmes de ce genre : un qui donne les diviseurs d'un nombre et l'autre qui dit si un nombre est premier ou pas Je les écrierais quand j'aurai le temps 
| Code | :ClrHome
:3->A:1->F
:Lbl 1
:A+1->A:1->X:1->E
:int ([racine carrée]A)->B
:Lbl A
:X+1->X:A/X->C
:int (A/X)->D
:If C=D:E+1->E
:If X=B:Goto 2
:Goto A
:Lbl 2
:If F=8:Then
:Output(8,1,"SUITE...
:Pause :ClrHome
:1->F:End
:If E=1:Then
:Output(F,1,A
:F+1->F
:End
:Goto 1 |
Voilà ! S'il y a des problèmes ou si vous avez des idées d'amélioration, n'hésitez pas à répondre
PS : J'aimerai bien aussi qu'on m'aide pour l'affichage du 1, 2 et 3. 
Edit :
Voici Le programme permettant d'avoir les diviseurs d'un nombre. Il fait 203 Octets.
| Code | :ClrHome
:Input "VOTRE NOMBRE:",A
:0->B:2->C:0->F
:Lbl A
:B+1->B:int (A/B)->D:A/B->E
:If D=E:Then
:Output(C,1,B
:C+1->C:F+1->F
:End
:If C=8:Then
:Output(C,1,"SUITE...
:Pause :ClrHome
:1->C:End
:If B>=(A/2):Then
:Output(C,1,A
:Goto 1:End
:Goto A
:Lbl 1
:If F=2:Output(8,1,"PREMIER
:If F!=2:Output(8,1,"PAS PREMIER
:Stop |
Et enfin le troisième et dernier programme qui indique si un nombre est premier ou pas Il fait 162 Octets .
| Code | :ClrHome
:Input "A:",A
:int ([racine carrée]A)->F:1-E:0->X
:int (A/2)->G:A/2->H
:If G=H and A!=2:Goto 2
:Lbl A
:X+1->X
:A/X->B:int (A/X)->D
:If B=D:E+1->E
:If E=3:Goto 2
:If X=F:Goto 1
:Goto A
:Lbl 1
:Output(2,1,"PREMIER
:Stop
:Lbl 2
:Output(2,1,"PAS PREMIER
:Stop |
Voilà ! Bonne soirée 
---------------------- Joyeuse Pâques  |
 |
|
| |
-SuitOn-
Autorisation : Membre
Nb de messages : 1
Inscrit le : Ven 28 Mai 2010, 23:31
|
Posté le : Ven 28 Mai 2010, 23:34
|
|
|
salut je suis nouveau et je me demandais comment tu fais less " -> "
meric ^^
|
 |
|
| |
Sangohan38
Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
|
Posté le : Ven 28 Mai 2010, 23:55
|
|
|
Il s'agit de la touche sto au dessus de on sur ta calculatrice.
Sangohan38
|
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Lun 31 Mai 2010, 18:20
|
|
|
On est presque tous passés par ce genre de programme continue comme ça.
Sâche que 1 n'est pas vraiement un nombre premier. Et puis pour afficher 2 et 3 place simplement deux output au début, et en mettant F directement à 3 (dans le premier programme).
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |
patate007
Autorisation : Membre
Nb de messages : 103
Inscrit le : Mar 09 Fév 2010, 8:49
|
Posté le : Lun 31 Mai 2010, 19:34
|
|
|
Merci Ce n'est pas mon premier premier programme mais seulement c'est celui que j'ai trouvé le plus utile =° J'ai fais des fonds d'ecrans, des conversions, des minis-jeux,... Je suis en train de faire un mini RPG textuel sur le thème des gladiateurs 
Sinon, l'idée des Outputs au début n'est pas mal mais je ne comprend pas pourquoi dans le premier programme ne m'indique pas 2 et 3 comme nombres premiers alors que dans le 2e et 3e programme il me les indiques =°
---------------------- Joyeuse Pâques  |
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Lun 31 Mai 2010, 23:07
|
|
|
Le premier programme démarre avec 3->A , et la première boucle l'incrémente. Donc il commence à 4.
Remplace par 1->A et ton programme énumèrera 2 et 3.
Quant aux 2 autres ils testent les valeurs saisies à partir de 2.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |
Google_AdSense
|
Publicité
|
|
|
|
| |
patate007
Autorisation : Membre
Nb de messages : 103
Inscrit le : Mar 09 Fév 2010, 8:49
|
Posté le : Mar 01 Jui 2010, 8:19
|
|
|
J'avais déjà essayé de changer 3->A par 1->A Mais après cette modification, il n'y a plus rien qui s'affiche 
---------------------- Joyeuse Pâques  |
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mar 01 Jui 2010, 23:41
|
|
|
Je crois avoir trouvé. Le test d'égalité à la racine pose problème :
en effet les divisions commencent à 2 alors que int([racine]2)=int([racine]3)=1 , ce qui est inférieur à 2 : la première boucle n'est pas quittée !
remplace If X=B par If X>=B
et d'autres détails
=> Cela donne ce code ; les lignes de modifs sont signalées par //
| Code | ClrHome
1->A //
1->F
Lbl1
A+1->A
0->X //
0->E //
int([racine]A)->B
LblA
X+1->X
A/X->C
int(A/X)->D
If C=D
E+1->E
If X>=B //
Goto2
GotoA
Lbl2
If F=8
Then
output(8,1,"SUITE...
Pause
ClrHome
1->F
End
If E=1
Then
output(F,1,A
F+1->F
End
Goto1
|
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |
patate007
Autorisation : Membre
Nb de messages : 103
Inscrit le : Mar 09 Fév 2010, 8:49
|
Posté le : Mer 02 Jui 2010, 10:41
|
|
|
Merci ! Ca marche à merveille ! 
---------------------- Joyeuse Pâques  |
 |
|
| |
Akmdad
Autorisation : Membre
Nb de messages : 713
Inscrit le : Mar 22 Jui 2010, 21:03
|
Posté le : Jeu 24 Jui 2010, 13:29
|
|
|
pourra-tu poster ton mini-RPG une fois fini s'il-te-plait??? bonne chance et j'espere que tu ne vas pas laisser tomber!!!
---------------------- retrouvez moi sur twitter!!!
j'ai une ti 82 stats fr et une ti89 titanium  |
 |
|
| |
patate007
Autorisation : Membre
Nb de messages : 103
Inscrit le : Mar 09 Fév 2010, 8:49
|
Posté le : Jeu 24 Jui 2010, 16:33
|
|
|
Il reste quelques problêmes a corriger dans la zone de combats mais pour l'instant je n'ai pas trop le temps de les corriger ... Si tu veus je te passe le cahier des charges sous forme bloc note 
Les paragraphes entre parenthèses sont utiles pour le programmeur mais pas pour le joueur.
---------------------- Joyeuse Pâques  |
 |
|
| |
Akmdad
Autorisation : Membre
Nb de messages : 713
Inscrit le : Mar 22 Jui 2010, 21:03
|
Posté le : Jeu 24 Jui 2010, 16:42
|
|
|
c'est pas de la tarte...
le prog doit faire plus de 10000 octets,non?
---------------------- retrouvez moi sur twitter!!!
j'ai une ti 82 stats fr et une ti89 titanium  |
 |
|
| |
patate007
Autorisation : Membre
Nb de messages : 103
Inscrit le : Mar 09 Fév 2010, 8:49
|
Posté le : Jeu 24 Jui 2010, 16:49
|
|
|
Il fait présisément 3 791 octects avec les bugs dans l'arène. Je n'ai pas encore cherché à réduire la taille =°
PS : J'avais pensé à crypter les variables dans la liste pour minimiser les triches (qui seront toujours possibles en éditant les progrrames =/) Mais cela grossierai encore plus la place ...
---------------------- Joyeuse Pâques  |
 |
|
| |
Sangohan38
Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
|
Posté le : Jeu 24 Jui 2010, 16:51
|
|
|
STOP!
C'est pas le sujet ici. Si vous voulez en parler, soit vous en parlez en privé, soit vous créez un nouveau sujet.
Sangohan38
|
 |
|
| |
ProgrammeTI
Invité
|
Posté le : Dim 17 Déc 2017, 17:15
|
|
|
Le programme du nombre premier est faux car il affiche 1 comme étant premier, Je propose donc cette correction :
| Code |
:ClrHome
:Input "A:",A
:int ([racine carrée]A)->F:1-E:0->X
:int (A/2)->G:A/2->H
:If G=H and A!=2:Goto 2
:Lbl A
:X+1->X
:A/X->B:int (A/X)->D
:If B=D:E+1->E
:If E=3:Goto 2
:If X=F:Goto 1
:Goto A
:Lbl 1
:If X=1:Goto 2 ///J'ai rajouté cette ligne-là qui rend donc les résultats du programme corrects
:Output(2,1,"PREMIER
:Stop
:Lbl 2
:Output(2,1,"PAS PREMIER
:Stop
|
|
| |
|
| |
ProgrammeTI
Invité
|
Posté le : Dim 17 Déc 2017, 17:31
|
|
|
Il ne reste plus que le 2 et le 3 à résoudre
|
| |
|
| |
Google_AdSense
|
Publicité
|
|
|
|
| |
ProgrammeTI
Invité
|
Posté le : Dim 17 Déc 2017, 17:46
|
|
|
Je retire tout ce que j'ai dit, le programme est faux, il affiche 9 comme étant premier
|
| |
|
| |
Lee-korn
Autorisation : Membre
Nb de messages : 19
Inscrit le : Sam 16 Déc 2017, 16:13
|
Posté le : Mar 30 Jan 2018, 10:27
|
|
|
Je ne trouve pas ton programme très optimisé, l'utilisation des Goto n'est pas judicieuse, en effet, le programme doit être relu depuis le début pour trouver le Lbl correspondant: c'est un peu long .
Je te conseille aussi d'incrémenter ton x de 2 en 2(ça ne sert à rien de vérifier si il est divisible par 4 puisque tu as déjà vérifié si il était pair)
Je te propose plutôt ce programme:
| Code | :ClrHome
:Input "Nombre: ",N
:int([racine carrée]N->R
:if N=R ou N!=2 et 0=reste(N,2 //[!=] c'est la touche différent
:then
:Disp "Ce nombre n'est","pas premier
:Stop
:End
:For(I,3,R,2
:if 0=reste(N,I
:then
:Disp"Ce nombre n'est","pas premier
:Stop
:End
:End
:Disp "Ce nombre est","premier
:Stop
: |
Voila 
---------------------- La meilleure façon de prédire le futur est de l'inventer |
 |
|
| |