Divibilité et algorithme
Divibilité et algorithme
Bonjour,
Je voudrais écrire un algorithme donnant tous les diviseurs d'un entier N donné, mais celui que j'ai écrit ne fonctionne pas
Et je ne comprends pas pourquoi...
Sachant que b divise a ssi E(b/a)=b/a
j'ai écrit ceci sur ma calculatrice CASIO graph 35 +
Saisir N
I prend la valeur 1
If Intg(N/I)= N/I
Then Afficher I
I prend la valeur I+1
IfEnd
Et quelque soit N, la calculatrice me donne pour diviseurs 1 et 2
Pouvez vous m'aider s'il vous plaît?
Merci
Je voudrais écrire un algorithme donnant tous les diviseurs d'un entier N donné, mais celui que j'ai écrit ne fonctionne pas
Et je ne comprends pas pourquoi...
Sachant que b divise a ssi E(b/a)=b/a
j'ai écrit ceci sur ma calculatrice CASIO graph 35 +
Saisir N
I prend la valeur 1
If Intg(N/I)= N/I
Then Afficher I
I prend la valeur I+1
IfEnd
Et quelque soit N, la calculatrice me donne pour diviseurs 1 et 2
Pouvez vous m'aider s'il vous plaît?
Merci
-
- Messages : 2177
- Enregistré le : mer. 5 sept. 2007 12:03
Re: Divibilité et algorithme
Bonjour,
dans votre algorithme, seule la division par 1 est testée.
Vous voulez diviser successivement votre nombre par 2 puis par 3 etc... donc par toutes les valeurs de 1 à N.
Donc votre programme doit avoir une boucle : Pour i allant de 1 à N ...
Bon courage
dans votre algorithme, seule la division par 1 est testée.
Vous voulez diviser successivement votre nombre par 2 puis par 3 etc... donc par toutes les valeurs de 1 à N.
Donc votre programme doit avoir une boucle : Pour i allant de 1 à N ...
Bon courage
Re: Divibilité et algorithme
bonsoir,
merci de m'avoir répondu
effectivement j'avais oublié une ligne
j'ai corrigé et cela fonctionne (j'ai rajouté également afficher -I pour avoir tous les multiples)
par contre j'ai un autre problème : à chaque fois dans ma liste de diviseurs, j'ai le dernier diviseur +1, par exemple pour 48 :1;-1;3;-3;6;-6;8;-8;12;-12;16;-16;-24;24;48;-48;-49 Pourtant le afficher I se trouve avant le IfEnd....de plus il manque des diviseurs comme le 2 ici... Pourquoi ne teste t'il pas tous les nombres de 1 à N?
merci
merci de m'avoir répondu
effectivement j'avais oublié une ligne
j'ai corrigé et cela fonctionne (j'ai rajouté également afficher -I pour avoir tous les multiples)
par contre j'ai un autre problème : à chaque fois dans ma liste de diviseurs, j'ai le dernier diviseur +1, par exemple pour 48 :1;-1;3;-3;6;-6;8;-8;12;-12;16;-16;-24;24;48;-48;-49 Pourtant le afficher I se trouve avant le IfEnd....de plus il manque des diviseurs comme le 2 ici... Pourquoi ne teste t'il pas tous les nombres de 1 à N?
merci
-
- Messages : 2177
- Enregistré le : mer. 5 sept. 2007 12:03
Re: Divibilité et algorithme
Bonjour,
pour que je puisse vous répondre, je dois avoir votre nouveau programme ...
A bientôt
pour que je puisse vous répondre, je dois avoir votre nouveau programme ...
A bientôt
Re: Divibilité et algorithme
J'ai modifié un peu mon programme et il fonctionne maintenant (je ne vois pas vraiment pourquoi mon nouveau programme fonctionne mieux que l'ancien), l'ancien était :
:
Saisir N
I prend la valeur 1
Pour I allant de 1 à N
Si Intg(N/I)=N/I
Alors afficher I
Afficher -I
I prend la valeur I+1
Fin du si
Next
Le nouveau :
Saisir N
I prend la valeur 1
Pour I allant de 1 à N Step 1
Si Intg(N/I)=(N/I)
Alors afficher I
Afficher - I
Fin du Si
Next
:
Saisir N
I prend la valeur 1
Pour I allant de 1 à N
Si Intg(N/I)=N/I
Alors afficher I
Afficher -I
I prend la valeur I+1
Fin du si
Next
Le nouveau :
Saisir N
I prend la valeur 1
Pour I allant de 1 à N Step 1
Si Intg(N/I)=(N/I)
Alors afficher I
Afficher - I
Fin du Si
Next
-
- Messages : 10401
- Enregistré le : lun. 30 août 2010 11:15
Re: Divibilité et algorithme
Bonjour,
Dans la calculatrice, il n'y a pas à écrire I prend la valeur I+1, car la commande Next permet de faire le décalage et d'aller directement au rang I+1.
Je te joins un petit exemple écrit sur algobox et qui a l'air de fonctionner : il permet de voir la syntaxe utilisée par un logiciel.
Dans Algobox, comme dans plusieurs logiciels, l'incrémentation dans une boucle Pour est implicite : on passe automatiquement de I à I+1. Bon courage pour la suite,
A bientôt sur sos-math
Dans la calculatrice, il n'y a pas à écrire I prend la valeur I+1, car la commande Next permet de faire le décalage et d'aller directement au rang I+1.
Je te joins un petit exemple écrit sur algobox et qui a l'air de fonctionner : il permet de voir la syntaxe utilisée par un logiciel.
Dans Algobox, comme dans plusieurs logiciels, l'incrémentation dans une boucle Pour est implicite : on passe automatiquement de I à I+1. Bon courage pour la suite,
A bientôt sur sos-math
Re: Divibilité et algorithme
merci beaucoup !