Pas encore membre?


Matrice -> liste
index du forum >> Problemes / Questions >> Matrice -> liste

Mystic blood

MP / Email
posté le 05/05/2008 à 12:54 par Mystic blood

Code: Lbl 1
1->A
ClrText
"Entrez le nombre"?->N
Int(racine de N)->M
{M+M,1}->Dim Mat L
0->P
For 1->K To M Step 1
If Frac (N/K)=0
Then P+2->P
K->Mat L[A,1]
(N/K)->Mat L[A+1,1]
A+2->A
IfEnd
Next
If Int (racine de N)= racine de N
Then P+1->P
racien de N->
Mat L[A,1]
IfEnd


C'est un petit programme qui donne les diviseurs d'un nombre N, ainsi que le nombre de diviseurs P.

Mais je stocke les diviseurs dans une matrice dont je définis la taille assez aléatoirement. Quelqu'un pourrait m'indiquer comment les rentrer dans une liste (ce serait sûrement plus pratique ) ??

PierrotLL

MP / Email
posté le 05/05/2008 à 19:33 par PierrotLL

Les listes sont plus simple a utiliser que les matrices, tu fais juste
Code: 10->Dim List 1
5->List 1[1]
{1,2,3->List 2
Rien de bien compliqué.

Dans ton programme, tu peux changer quelques petites choses, genre "M+M"->"2M", dans le For, le Step est facultatif, et il est de 1 par défaut, donc ton "Step 1" ne sert à rien. Il n'y a pas de formule pour connaitre le nombre de diviseur d'un nombre. Le seul moyen c'est de les chercher un par un. Mais tu peux largement optimiser ton prog. Pour faire le moins de test possible, teste seulement la division par 2, 3, et tous les 6k-1 et 6k+1, avec 6k+1<racine(N) car tous les nombres premiers sont de la forme 6k-1 et 6k+1 sauf 2 et 3
Mystic blood

MP / Email
posté le 06/05/2008 à 10:58 par Mystic blood

D'accord, mais j'ai remarqué que l'algorythme bugait légerement pout les nombres carrés. Une solution ?
PierrotLL

MP / Email
posté le 06/05/2008 à 22:27 par PierrotLL

il faut faire "<=racine(N)" et non "<"
Totoyo

MP / Email
posté le 10/05/2008 à 10:39 par Totoyo

C'est tirer du manuel de la G100+ dans la bibliothèque des programmes, mais que j'ai adapté en fonction de tes besoins ^^
Code: ClrText
"NOMBRE"?->A
2->B
1->C
Do
While Frac (A/B)=0
B->List 1[C
Isz C
A/B->A
WhileEnd
If B=2
Then 3->B
Else B+2->B
IfEnd
LpWhile B=<A
List 1

Je n'initialise pas la List 1, car ce n'est pas obligatoire, dans ce cas-là, sur une G100+
Mystic blood

MP / Email
posté le 19/05/2008 à 10:48 par Mystic blood

Ok, merci beaucoup^^

Pseudo:
Email:
anti spam:
( plus de smileys )





http://top-progcasio.com V5.0 © par Bebe Vador 2005 - 2008 | il y a 7 personnes connectées | sitemap(txt) | sitemap(html) | sitemap(xml)