Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Algorithme

Posté par
maths530
01-11-14 à 14:56

Bonjour, pourriez-vous m'aider s'il vous plaît à écrire un algorithme qui donne les nombres premiers inférieurs ou égaux à m (m étant le nombre que l'on rentre au début de l'algorithme) ?
Merci d'avance.

Posté par
mathafou Moderateur
re : Algorithme 01-11-14 à 15:13

Bonjour,

quelle méthode ferais tu à la main ?
les essayer un par un pour savoir s'ils sont premiers individuellement ?
les essayer un par un mais ne tester à chaque fois comme diviseurs que les nombres premiers déja trouvés qu'on garde dans un tableau ?
dans les boucles quand faudra-t-il s'arrêter à chercher des diviseurs de n ? à n ? à moins ?
fabriquer dans un tableau un crible d'Eratosthène ?
autre chose ?

"m étant un nombre [pas trop grand] qu'on rentre au début de l'algorithme"
pas trop grand sinon ça va en sortir un bon paquet !! après avoir mouliné un bon moment

en tout cas c'est comme d'hab :

avant d'écrire l'algorithme, il faut avoir clairement à l'esprit ce qu'on veut faire comme opérations dans cet algorithme
l'algorithme n'étant qu'une "formalisation" de la méthode de calcul, avec certains détails explicités.

encore faut-il donc avoir choisi / défini / étudié au préalable une méthode de calcul...

Posté par
maths530
Algorithme 01-11-14 à 15:23

Merci pour la réponse, je ferais comme ça :
Lire n
Pour j allant de 2 à n
S prend la valeur 0
D prend la valeur 2
Tant que D\leqpartie entière(\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

Posté par
mathafou Moderateur
re : Algorithme 01-11-14 à 16:00

à quoi sert ton j ??
tu cherches en fait à savoir en te posant la même question n-1 fois (pour chaque valeur de j) si n est un nombre premier ou pas

c'est ce que fait ton algorithme

on ne veut pas savoir s'il est premier ou pas, on veut donner une liste de nombres premiers eux mêmes (afficher true ou false n'a rien à voir avec la question, il y aura afficher une valeur, la valeur d'un nombre dont on aura vu qu'il est premier)


mais tu mets un peu la charrue avant les boeufs
on n'écrit jamais un algorithme "tout d'une traite" comme ça.

tu dois d'abord choisir un méthode et construire ton algorithme pas à pas

par exemple ;

choix de la méthode :
la plus simple, pour chaque nombre je teste individuellement s'il est premier ou pas OK

1ere étape de l'algorithme

lire n
pour j de 2 à n
si j est un nombre premier
alors afficher j
fin si
fin pour

si j n'est pas premier on n'a rien à dire : on veut juste une liste de nombres premiers et on n'est pas du tout intéressé par ceux qui ne le sont pas.

ensuite on développe :
comment traduire "si j est un nombre premier"
disons qu'on va répondre à cette question par un "drapeau" que tu as appelé S, pourquoi pas

l'algorithme devient :
lire n
pour j de 2 à n
/// ici toute une partie qui va analyser j pour savoir s'il est premier ou pas
/// (n n'a rien à faire là dedans)
/// et qui va retourner S = 1 si oui, et S = 0 si non
si S = 1
alors afficher j
fin si
fin pour

on analyse donc à part un nouvel algorithme :

étant donné un nombre j, répondre S = 1 s'il est premier et S = 0 sinon.

et ensuite une fois que ce truc marche on le substitue au bout correspondant dans l'algorithme principal

etc ...

procéder ainsi évite de faire une salade de variables et évite de répondre à côté à ce qui est demandé (true et false alors qu'on veut des valeurs)



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1741 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !