Algorithme

Répondre


Aide syntaxe LaTeX
Les BBCodes sont activés
[img] est désactivé
[flash] est désactivé
[url] est activé
Les smileys sont désactivés

Revue du sujet
   

Si vous souhaitez joindre un ou plusieurs fichiers, complétez les indications suivantes.

Étendre la vue Revue du sujet : Algorithme

Re: Algorithme

par sos-math(28) » lun. 3 nov. 2014 14:45

Bonjour
Tu peux aussi à la place de la variable S, utiliser une variable Premier que tu initialises à True et qui prendra la valeur False dès qu'un entier j divise n dans ta boucleTantque.
Il faut alors mettre dans ton test Pemier=True à la place de s=0.
Il suffit d'afficher la variable Premier pour terminer.
Attention : Ton algorithme n'affiche pas ce qui est attendu, mais un diviseur de n ou la partie entière de \(\sqrt{n}\)

Pouquoi n'utilises-tu pas un logiciel comme AlgoBox pour tester tes algorithmes ?
Il y a aussi le logiciel Psylvia

Re: Algorithme

par Morgan » lun. 3 nov. 2014 00:32

Mon algorithme est-il correct s'il vous plaît ?
Lire n
S prend la valeur 0
j prend la valeur 2
Tant que j \(\leq\) partie entière(\(\sqrt{n}\)) et S=0
Si partie décimale (\(\frac{n}{j}\))=0
Alors S prend la valeur 1
Fin Si
j prend la valeur j+1
Fin Tant que
Si S=0
Alors afficher j
Fin Si
Merci d'avance.

Re: Algorithme

par sos-math(12) » dim. 2 nov. 2014 23:46

Bonsoir

Le problème est le "Pour...", donc ajouter un FinPour ne solutionnera pas le problème........

Bon courage.

Re: Algorithme

par Morgan » dim. 2 nov. 2014 22:17

Bonsoir, merci de m'avoir répondu, si j'ai mis un FinPour à la fin de mon algorithme, il faut que je remette un tant que ?
Merci d'avance.

Re: Algorithme

par sos-math(12) » dim. 2 nov. 2014 22:10

Bonsoir :

l'utilisation de la commande "Pour J allant de 2 à n" n'est pas vraiment conseillée ici puisque tu vas changer la valeur de J. D'ailleurs il n'y a pas de Fin Pour dans ton algorithme.
Sinon le reste est correct.
Réfléchis à une commande alternative. Il n'y en a pas tant que cela à ton programme.

Bon courage

Re: Algorithme

par Morgan » dim. 2 nov. 2014 21:46

Mon algorithme est-il correct s'il vous plaît ?
Lire n
S prend la valeur 0
j prend la valeur 2
Pour j allant de 2 à n
Tant que j \(\leq\) partie entière( \(\sqrt{n}\)) et S=0
Si partie décimale (\(\frac{n}{j}\))=0
Alors S prend la valeur 1
Fin Si
j prend la valeur j+1
Fin Tant que
Si S=0
Alors afficher j
Fin Si
FinPour
Merci d'avance.

Re: Algorithme

par sos-math(21) » dim. 2 nov. 2014 21:35

Il faut donc que tu fasses une commande d'affichage dès que tu as un nombre premier.

Re: Algorithme

par Morgan » dim. 2 nov. 2014 18:42

Merci, oui, effectivement je veux qu'il me donne tous les nombres premiers inférieurs à n donc il ne faut pas qu'il m'affiche true ou false ?

Re: Algorithme

par SoS-Math(25) » dim. 2 nov. 2014 17:29

Bonjour Morgan,

Tu dois fonctionner étape par étape et ne pas diffuser des algorithmes comme cela.

Reprends les choses une à une.
Morgan a écrit : Lire 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
Voici le tout premier algorithme que tu voulais. Il demande un nombre "n" et renvoie si ce nombre "n" est premier ou non.

As-tu remarqué que la boucle "Pour" est inutile ici ?

Maintenant, que souhaites-tu exactement ?

Tu veux, je crois, un algorithme qui renvoie tous les nombres premiers plus petits que "n".

Si tu utilise une boucle "Pour j allant de 2 à n" alors du dois faire le test précédent sur chaque nombre "j" allant de 2 à "n" et pas sur "n" !

Lis bien les remarques et comprends tout cela avant de relancer sur la toile un nouvel algorithme.

Bon courage !

Re: Algorithme

par Morgan » dim. 2 nov. 2014 17:17

Mon algorithme est-il correct s'il vous plaît ?
Lire n
S prend la valeur 0
j prend la valeur 2
Pour j allant de 2 à n
Tant que j \(\leq E(\sqrt{n}\)) et S=0
Si partie décimale (\(\frac{n}{j}\))=0
Alors S prend la valeur 1
Fin Si
j prend la valeur j+1
Fin Tant que
Si S=0
Alors afficher "true"
Sinon afficher "false"
Fin Si
FinPour
Merci d'avance.

Re: Algorithme

par sos-math(21) » dim. 2 nov. 2014 16:38

Bonjour,
Ton affectation j prend la valeur j+1, ne doit pas être incluse dans la structure conditionnelle sinon tu risques de ne jamais avancer : ta boucle ne va pas évoluer car ton compteur va rester bloqué.
Il faut sortir cette commande du SI.... et tu n'as donc pas besoin de sinon.
Bon courage

Re: Algorithme

par Morgan » dim. 2 nov. 2014 16:18

Mon algorithme est-il correct s'il vous plaît ?
Lire n
S prend la valeur 0
j prend la valeur 2
Pour j allant de 2 à n
Tant que j \(\leq E(\sqrt{n}\)) et S=0
Si partie décimale (\(\frac{n}{j}\))=0
Alors S prend la valeur 1
Sinon j prend la valeur j+1
Fin Si
Fin Tant que
Si S=0
Alors afficher "true"
Sinon afficher "false"
Fin Si
FinPour
Merci d'avance.

Re: Algorithme

par SoS-Math(9) » dim. 2 nov. 2014 15:58

Morgan,

C'est mieux ...
L'instruction "j prend la valeur 2" ne sert à rien ....
L'instruction "Sinon j prend la valeur j+1" ne sert à rien .... car dans une boucle avec "pour" la variable (ici j) augment de 1 à chaque "tour de la boucle".

SoSMath.

Re: Algorithme

par Morgan » dim. 2 nov. 2014 15:21

Mon algorithme est-il correct s'il vous plaît ?
Lire n
S prend la valeur 0
j prend la valeur 2
Pour j allant de 2 à n
Tant que j \(\leq\) E(\(\sqrt{n}\)) et S=0
Si partie décimale (\(\frac{n}{j}\))=0
Alors S prend la valeur 1
Sinon j prend la valeur j+1
Fin Si
Fin Tant que
Si S=0
Alors afficher "true"
Sinon afficher "false"
Fin Si
FinPour
Merci d'avance.

Re: Algorithme

par SoS-Math(9) » dim. 2 nov. 2014 15:13

Morgan,

Tu ne tiens pas compte des remarques faites ....
De plus dans ton nouvel algorithme les instructions "S+1 prend la valeur 0" et "D+1 prend la valeur 2" n'ont pas de sens ...

Encore une fois, l'initialisation de S et D de se fait pas dans la boucle ...
et quand tu calcules "(\frac{n}{D})" dans ta boucle, tu calcules toujours la même chose car n et D ne change pas ....

A quoi sert la variable D dans ton algorithme ? Je ne vois pas ... Peut-être que tu confonds avec la variable j ?

SoSMath.

Haut