Algorithme
Algorithme
Bonjour, on me demande d'écrire un algorithme qui :
-demande la saisie d'un entier naturel n supérieur ou égal à 2 ;
-teste, pour i allant de 2 à E(\(\sqrt{n}\)) de 1 en 1, si i divise n et renvoie true si l'entier n est premier et false sinon.
Ce que j'ai fait :
Lire n
0 prend la valeur S
2 prend la valeur D
Tant que D\(\leq\)partie entière(\(\sqrt{n}\)) et S=0
Si partie décimale(\(\frac{n}{D}\))=0
Alors 1 prend la valeur S
Sinon D+1 prend la valeur D
Fin Tant que
Fin Si
Si S=0
Alors afficher "true"
Sinon afficher "false"
Fin Si
Mais par contre je n'arrive pas à coder un algorithme qui :
-demande la saisie d'un entier naturel m ;
-renvoie, pour j allant de 0 à m de 1 en 1, la réponse du test de primalité que j'ai établi de l'entier R(j).
Pourriez-vous m'aider s'il vous plaît ?
Merci d'avance.
-demande la saisie d'un entier naturel n supérieur ou égal à 2 ;
-teste, pour i allant de 2 à E(\(\sqrt{n}\)) de 1 en 1, si i divise n et renvoie true si l'entier n est premier et false sinon.
Ce que j'ai fait :
Lire n
0 prend la valeur S
2 prend la valeur D
Tant que D\(\leq\)partie entière(\(\sqrt{n}\)) et S=0
Si partie décimale(\(\frac{n}{D}\))=0
Alors 1 prend la valeur S
Sinon D+1 prend la valeur D
Fin Tant que
Fin Si
Si S=0
Alors afficher "true"
Sinon afficher "false"
Fin Si
Mais par contre je n'arrive pas à coder un algorithme qui :
-demande la saisie d'un entier naturel m ;
-renvoie, pour j allant de 0 à m de 1 en 1, la réponse du test de primalité que j'ai établi de l'entier R(j).
Pourriez-vous m'aider s'il vous plaît ?
Merci d'avance.
-
- Messages : 1867
- Enregistré le : mer. 2 nov. 2011 09:39
Re: Algorithme
Bonjour Morgan,
L'ensemble de ton algorithme est correct mais il y a des erreurs :
Pour coder, cela dépend du support... Quelle calculatrice ? Quel logiciel ?
A bientôt !
L'ensemble de ton algorithme est correct mais il y a des erreurs :
C'est plutôt l'inverse non ? S prend la valeur 0 et .... de même pour S et D dans la boucle "tant que"Morgan a écrit : 0 prend la valeur S
2 prend la valeur D
.
Il y a une inversion à la fin, tu mets fin à ta boucle avant de finir le "Si".Morgan a écrit : Tant que D\(\leq\)partie entière(\(\sqrt{n}\)) et S=0
Si partie décimale(\(\frac{n}{D}\))=0
Alors 1 prend la valeur S
Sinon D+1 prend la valeur D
Fin Tant que
Fin Si
Pour coder, cela dépend du support... Quelle calculatrice ? Quel logiciel ?
A bientôt !
Re: Algorithme
Oui, effectivement je me suis trompé ! Merci beaucoup !
En fait, je voudrais simplement écrire un algorithme sans le coder.
Merci d'avance.
En fait, je voudrais simplement écrire un algorithme sans le coder.
Merci d'avance.
-
- Messages : 1867
- Enregistré le : mer. 2 nov. 2011 09:39
Re: Algorithme
Dans certains langages, on utilise "Prompt n" pour demander une valeur à affecter à la variable n, ou encore Input "n=",n
Dans Algobox, on utilise "Lire n", comme tu l'as écrit...
Si tu reste sur papier sans savoir sur quel support tu vas coder, le langage que tu utilises est très bien.
A bientôt !
Dans Algobox, on utilise "Lire n", comme tu l'as écrit...
Si tu reste sur papier sans savoir sur quel support tu vas coder, le langage que tu utilises est très bien.
A bientôt !
Re: Algorithme
Mon algorithme est-il correct s'il vous plaît ?
Lire m
Pour n allant de 0 à m
d prend la valeur 2
Tant que partie décimale(\(\frac{n}{d}\))>0 et d\(\leq\)\(\sqrt{n}\)
d prend la valeur d+1
Fin Tant que
Si partie décimale(\(\frac{n}{d}\))=0 ou n=1
Alors afficher "n'est pas premier"
Sinon afficher "est premier"
FinSi
FinPour
Merci d'avance.
Lire m
Pour n allant de 0 à m
d prend la valeur 2
Tant que partie décimale(\(\frac{n}{d}\))>0 et d\(\leq\)\(\sqrt{n}\)
d prend la valeur d+1
Fin Tant que
Si partie décimale(\(\frac{n}{d}\))=0 ou n=1
Alors afficher "n'est pas premier"
Sinon afficher "est premier"
FinSi
FinPour
Merci d'avance.
-
- Messages : 1867
- Enregistré le : mer. 2 nov. 2011 09:39
Re: Algorithme
Je ne comprends pas vraiment ce que tu souhaites obtenir.
Veux-tu un algorithme qui renvoie tous les nombres premiers jusqu'à m ?
Prends le cas n=2 dans ta boucle "Pour" :
d=2
Tant que partie décimale\((\frac{n}{d})>0\) et... Faux car 2/2 = 1
Fin Tant que
Si partie décimale\((\frac{n}{d})=0\) ou n=1 ... Vrai car 2/2 = 1
Alors afficher "n'est pas premier"
2 n'est-il pas premier ?
Que souhaites-tu obtenir exactement ?
Veux-tu un algorithme qui renvoie tous les nombres premiers jusqu'à m ?
Prends le cas n=2 dans ta boucle "Pour" :
d=2
Tant que partie décimale\((\frac{n}{d})>0\) et... Faux car 2/2 = 1
Fin Tant que
Si partie décimale\((\frac{n}{d})=0\) ou n=1 ... Vrai car 2/2 = 1
Alors afficher "n'est pas premier"
2 n'est-il pas premier ?
Que souhaites-tu obtenir exactement ?
Re: Algorithme
Merci de m'avoir répondu, je souhaite obtenir un algorithme qui :
-demande la saisie d'un entier naturel m ;
-renvoie, pour j allant de 0 à m de 1 en 1, la réponse du test de primalité que j'ai établi de l'entier R(j).
Merci d'avance.
-demande la saisie d'un entier naturel m ;
-renvoie, pour j allant de 0 à m de 1 en 1, la réponse du test de primalité que j'ai établi de l'entier R(j).
Merci d'avance.
-
- Messages : 1867
- Enregistré le : mer. 2 nov. 2011 09:39
Re: Algorithme
C'est bien ce que je pensais.
Ton algorithme doit donc lister les nombres premiers inférieurs ou égaux à m... c'est cela ?
Pourquoi ne pas utiliser ton premier algorithme (en corrigeant les erreurs) en remplaçant n par j ?
A bientôt !
Ton algorithme doit donc lister les nombres premiers inférieurs ou égaux à m... c'est cela ?
Pourquoi ne pas utiliser ton premier algorithme (en corrigeant les erreurs) en remplaçant n par j ?
A bientôt !
Re: Algorithme
D'accord, en fait, il faut écrire un algorithme qui donne les m premiers nombres premiers.
C'est bien ça ?
C'est bien ça ?
-
- Messages : 1867
- Enregistré le : mer. 2 nov. 2011 09:39
Re: Algorithme
Je ne comprends plus... Pourquoi me poses-tu cette question ?
Ton souhait était le suivant :
Par exemple, si m = 6, alors tu souhaites (je crois comprendre) renvoyer :
"2 est premier"
"3 est premier"
"5 est premier"
N'est-ce pas cela ?
Ton souhait était le suivant :
Cela ne donne pas les m premiers nombres premiers, cela donne tous les nombres premiers qui sont inférieurs ou égaux à m.Morgan a écrit :je souhaite obtenir un algorithme qui :
-demande la saisie d'un entier naturel m ;
-renvoie, pour j allant de 0 à m de 1 en 1, la réponse du test de primalité que j'ai établi de l'entier R(j).
Merci d'avance.
Par exemple, si m = 6, alors tu souhaites (je crois comprendre) renvoyer :
"2 est premier"
"3 est premier"
"5 est premier"
N'est-ce pas cela ?
Re: Algorithme
Oui, effectivement c'est ce que je souhaite.
Vous pourriez m'aider s'il vous plaît car je suis un peu perdu.
Merci d'avance.
Vous pourriez m'aider s'il vous plaît car je suis un peu perdu.
Merci d'avance.
-
- Messages : 1867
- Enregistré le : mer. 2 nov. 2011 09:39
Re: Algorithme
Tu as fais le plus dur avec ton tout premier algorithme.
Reprends-le, corrige les erreurs :
Bon courage !
Ici ton algorithme teste si n est premier ou non.Morgan a écrit : -demande la saisie d'un entier naturel n supérieur ou égal à 2 ;
-teste, pour i allant de 2 à E(\(\sqrt{n}\)) de 1 en 1, si i divise n et renvoie true si l'entier n est premier et false sinon.
Lire n
0 prend la valeur S
2 prend la valeur D
Tant que D\(\leq\)partie entière(\(\sqrt{n}\)) et S=0
Si partie décimale(\(\frac{n}{D}\))=0
Alors 1 prend la valeur S
Sinon D+1 prend la valeur D
Fin Tant que
Fin Si
Si S=0
Alors afficher "true"
Sinon afficher "false"
Fin Si
Reprends-le, corrige les erreurs :
Ensuite, tu utiliseras cet algorithme sur chaque nombre j allant de 2 à m...SoS-Math(25) a écrit : L'ensemble de ton algorithme est correct mais il y a des erreurs :
C'est plutôt l'inverse non ? S prend la valeur 0 et .... de même pour S et D dans la boucle "tant que"Morgan a écrit : 0 prend la valeur S
2 prend la valeur D
.
Il y a une inversion à la fin, tu mets fin à ta boucle avant de finir le "Si".Morgan a écrit : Tant que D\(\leq\)partie entière(\(\sqrt{n}\)) et S=0
Si partie décimale(\(\frac{n}{D}\))=0
Alors 1 prend la valeur S
Sinon D+1 prend la valeur D
Fin Tant que
Fin Si
!
Bon courage !
Re: Algorithme
D'accord, merci.
Est-ce correct ?
Lire n
Pour j allant de 2 à n
S prend la valeur 0
D prend la valeur 2
Tant que \(D \leq E(\sqrt{n})\) et S=0
Si partie décimale \((\frac{n}{D})\)=0
Alors S prend la valeur 1
Sinon D prend la valeur D+1
Fin Si
Fin Tant que
Si S=0
FinPour
Alors afficher "true"
Sinon afficher "false"
Fin Si
Est-ce correct ?
Lire n
Pour j allant de 2 à n
S prend la valeur 0
D prend la valeur 2
Tant que \(D \leq E(\sqrt{n})\) et S=0
Si partie décimale \((\frac{n}{D})\)=0
Alors S prend la valeur 1
Sinon D prend la valeur D+1
Fin Si
Fin Tant que
Si S=0
FinPour
Alors afficher "true"
Sinon afficher "false"
Fin Si
-
- Messages : 1867
- Enregistré le : mer. 2 nov. 2011 09:39
Re: Algorithme
C'est l'idée...
Sauf qu'ici, la boucle "Pour j allant de 2 à n" ne sert à rien car tu testes seulement si n est premier :
Ensuite, une fois que ce code sera juste, tu pourras l'inclure dans ta boucle "Pour n allant de 2 à m" et tester si chacun des nombre n allant de 2 à m est premier...
Un travail à la fois !
Sauf qu'ici, la boucle "Pour j allant de 2 à n" ne sert à rien car tu testes seulement si n est premier :
De plus, tu mets fin à ta boucle "Pour" en plein milieu d'un "Si"... pourquoi ? :Morgan a écrit : Tant que \(D \leq E(\sqrt{n})\) et S=0
Si partie décimale \((\frac{n}{D})\)=0
Alors S prend la valeur 1
Sinon D prend la valeur D+1
Fin Si
Fin Tant que
Écris bien le code juste pour tester si n est premier (sans utiliser la boucle "Pour j allant de 2 à n").Morgan a écrit : Si S=0
FinPour
Alors afficher "true"
Sinon afficher "false"
Fin Si
Ensuite, une fois que ce code sera juste, tu pourras l'inclure dans ta boucle "Pour n allant de 2 à m" et tester si chacun des nombre n allant de 2 à m est premier...
Un travail à la fois !
Re: Algorithme
Comme ça ?
Lire n
Pour j allant de 2 à n
S prend la valeur 0
D prend la valeur 2
Tant que D \leq E(\sqrt{n}) et S=0
Si partie décimale (\frac{n}{D})=0
Alors S prend la valeur 1
Sinon D prend la valeur D+1
Fin Si
Fin Tant que
Si S=0
Alors afficher "true"
Sinon afficher "false"
Fin Si
FinPour
Lire n
Pour j allant de 2 à n
S prend la valeur 0
D prend la valeur 2
Tant que D \leq E(\sqrt{n}) et S=0
Si partie décimale (\frac{n}{D})=0
Alors S prend la valeur 1
Sinon D prend la valeur D+1
Fin Si
Fin Tant que
Si S=0
Alors afficher "true"
Sinon afficher "false"
Fin Si
FinPour