[AXE] Diviseurs d'un nombre
3 participants
Page 1 sur 1
[AXE] Diviseurs d'un nombre
Bonjour,
je viens de me remettre à l'axe en faisant un programme qui calcule très rapidement tous les diviseurs d'un nombre (inférieur ou égal à 65535)
ADIVISEU.8xp : executable (à lancer avec asm( )
AXEDIV.8xp : code source
Sandro
PS1 : je pense que j'essayerais de faire que ça marche pour des nombres plus grands après le bac blanc (semmaine prochaine)
PS2 : y aurait-il un moyen de remplacer ma routine pour demander le nombre?
je viens de me remettre à l'axe en faisant un programme qui calcule très rapidement tous les diviseurs d'un nombre (inférieur ou égal à 65535)
ADIVISEU.8xp : executable (à lancer avec asm( )
AXEDIV.8xp : code source
- Code:
.ADIVISEUR
ClrHome
"N=" -> Str1
Output(0,0,Str1
0 -> K -> N
While K =!= 9
getKey -> K
If K=33
N*10 -> N
End
If K=34
N*10+1 -> N
End
If K=35
N*10+4 -> N
End
If K=36
N*10+7 -> N
End
If K=26
N*10+2 -> N
End
If K=27
N*10+5 -> N
End
If K=28
N*10+8 -> N
End
If K=18
N*10+3 -> N
End
If K=19
N*10+6 -> N
End
If K=20
N*10+9 -> N
End
If K=56
N/10 -> N
End
If K=15
0 -> N
End
Output(2,0,N>Dec
End
1üP
1 -> {L1}r
For(A,2,rac(N))
!If N^A
P++
A -> {P*2+L1-2}r
End
End
rac(N)²=N -> Q
For(B,1,P)
N/{B*2+L1-2}r -> {P*2-B-Q*2+L1}r
End
For(B,1,P*2-Q)
Output(0,2,{B*2+L1-2}r>Dec
Pause 2000
End
Sandro
PS1 : je pense que j'essayerais de faire que ça marche pour des nombres plus grands après le bac blanc (semmaine prochaine)
PS2 : y aurait-il un moyen de remplacer ma routine pour demander le nombre?
sandro- Or 4
- Sexe :
Age : 28
Messages : 806
Date d'inscription : 01/07/2011
Etudes : T°S SVT spé maths
Points Forum : 29
Points Concours : 5
Langages :- - TI-Basic Z80
- - ASM TI-82 Stats / TI-83
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-82 Stats.fr
- - TI-84+ SE
- - TI-89
- - Casio Collège
Re: [AXE] Diviseurs d'un nombre
Pour ceux qui auraient la flemme de tester :
[Vous devez être inscrit et connecté pour voir cette image]
Génial vraiment j'aime bien, j'ai le même en TI-Basic et j'avais jamais pensé le faire en Axe. Pour la routine de demande de nombre, je suis tout à fait d'accords. J'avais pensé à cette optimisation :
Mais pourquoi cette valeur n'est stockée nul part ?
C'est une optimisation du registre hl ! En fait tu peux considérer le registre HL comme la variable Ans du TI-Basic, chaque calcul sera stocké dedans. Donc le code suivant :
Bref c'est la même chose avec :
Si je peux me permettre de te donner quelques ajouts à faire qui seraient sympa :
[Vous devez être inscrit et connecté pour voir cette image]
Génial vraiment j'aime bien, j'ai le même en TI-Basic et j'avais jamais pensé le faire en Axe. Pour la routine de demande de nombre, je suis tout à fait d'accords. J'avais pensé à cette optimisation :
- Code:
:If inData(K,Data(33,34,26,18,35,27,19,36,28,20,0
:-1*10→N
:ElseIf K=56
:N/10→N
:Else!If K-15
:→N
:End
- Spoiler:
- (kindermoumoute est complètement fou !)
Mais pourquoi cette valeur n'est stockée nul part ?
C'est une optimisation du registre hl ! En fait tu peux considérer le registre HL comme la variable Ans du TI-Basic, chaque calcul sera stocké dedans. Donc le code suivant :
- Code:
:If A
:→B
:End
Bref c'est la même chose avec :
- Code:
Else!If K-15
:→N
Si je peux me permettre de te donner quelques ajouts à faire qui seraient sympa :
- Dire quand le nombre est premier.
- Proposer un défilement des diviseurs sous forme de tableau (les pause sont un peu lente).
- Étendre aux nombres floats avec l'axiom ici.
- Stocker dans L1 (de la calculatrice) les résultats.
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Diviseurs d'un nombre
merci beaucoup.
Par contre pour les améliorations, ça risque de devoir attendre que j'ai fini mon bac blanc
Sandro
PS : donc il n'y a aucune fonction permettant directement de lire un nombre?
PS2 : "(kindermoumoute est complètement fou !)" absolument pas mais plutôt "merci pour cette bonne optimisation" (je fais de "horreures" du même gere en basic).
Par contre pour les améliorations, ça risque de devoir attendre que j'ai fini mon bac blanc
Sandro
PS : donc il n'y a aucune fonction permettant directement de lire un nombre?
PS2 : "(kindermoumoute est complètement fou !)" absolument pas mais plutôt "merci pour cette bonne optimisation" (je fais de "horreures" du même gere en basic).
sandro- Or 4
- Sexe :
Age : 28
Messages : 806
Date d'inscription : 01/07/2011
Etudes : T°S SVT spé maths
Points Forum : 29
Points Concours : 5
Langages :- - TI-Basic Z80
- - ASM TI-82 Stats / TI-83
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-82 Stats.fr
- - TI-84+ SE
- - TI-89
- - Casio Collège
Re: [AXE] Diviseurs d'un nombre
Non, en fait il y a moyen de lire les chaîne de tokens avec input, mais à moins de faire appelle à un programme TI-Basic il faut recréer sa propre fonction de détection de touche.sandro a écrit:PS : donc il n'y a aucune fonction permettant directement de lire un nombre?
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Diviseurs d'un nombre
Ton orthographe est aussi une horreur sandro.
Sinon c'est très original de programmer ça en Axe, bonne continuation dans ce langage.
P.S. : tu ne participes pas au TI-Concours en Axe ?
Sinon c'est très original de programmer ça en Axe, bonne continuation dans ce langage.
P.S. : tu ne participes pas au TI-Concours en Axe ?
noelthebest- Platinum 1
- Sexe :
Age : 27
Messages : 1971
Date d'inscription : 12/03/2011
Etudes : ENS Cachan
Points Forum : 20
Points Concours : 9
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-83+.fr
- - TI-Nspire CX
- - Casio Collège
- - Casio Graph
Re: [AXE] Diviseurs d'un nombre
Je crois pas que j'aurais le temps, mais rajoute moi si ça te dérange pas, je pourrais toujours voir après dans quelle(s) catégorie(s) je rendrais de programmes (je pense pas que j'aurais le temps de faire les 3.
sandro- Or 4
- Sexe :
Age : 28
Messages : 806
Date d'inscription : 01/07/2011
Etudes : T°S SVT spé maths
Points Forum : 29
Points Concours : 5
Langages :- - TI-Basic Z80
- - ASM TI-82 Stats / TI-83
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-82 Stats.fr
- - TI-84+ SE
- - TI-89
- - Casio Collège
Re: [AXE] Diviseurs d'un nombre
D'accord.
(désolé pour le HS)
(désolé pour le HS)
noelthebest- Platinum 1
- Sexe :
Age : 27
Messages : 1971
Date d'inscription : 12/03/2011
Etudes : ENS Cachan
Points Forum : 20
Points Concours : 9
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-83+.fr
- - TI-Nspire CX
- - Casio Collège
- - Casio Graph
Sujets similaires
» Afficher un nombre de dix caractères sur le graphique.
» [Résolu] convertir une chaine en nombre
» recuperer le nombre de lignes d'une matrice
» Voir le nombre de cycle grace a wabbit emu ?
» Matrefeytontias's hex codes (ne pas poster ici, y'a un topic de discussion !)
» [Résolu] convertir une chaine en nombre
» recuperer le nombre de lignes d'une matrice
» Voir le nombre de cycle grace a wabbit emu ?
» Matrefeytontias's hex codes (ne pas poster ici, y'a un topic de discussion !)
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum