Lors d'un entretien d'embauche, on m'a demandé d'écrire un algorithme
permettant de trouver les 100 premiers nombres premiers... et à ma grande
honte, je n'ai pas su le faire.
Et même à tête reposée, je n'y arrive pas, alors je sollicite votre aide.
Attention, je parle d'un truc simple, pas de se servir de fonctions
mathématiques permettant d'optimiser la recherche de nombres premiers
supérieurs à X^12. Ca, j'en ai trouvé plein sur le net, mais àa m'a pas
beaucoup avancé :)
Question subsidaire: sur quel forum poster ce genre de questions ? J'ai
posté ici parceque je dois écrire le programme en VB, mais je suppose qu'il
y'a un forum plus approprié.
Ba c'est pas très dur. En quelque ligne, suffit juste de se rappeler qu'un nombre premier n'est divisible que par lui même et un. Commencer à partir de 2 (un n'est pas premier...) pour être rigoureux. Après il existe déjà de nombreux algorithmes, mais le plus simple reste celui la. X : nb a trouver i, j: deux var
x = 2 Tant que X <100 faire pour i = 2 to X-1 faire si x div i = 0 print X next i x=x+1 fin tant que
Quel bille! plutot ça : X : nb a trouver i : var bool
x = 2 Tant que X <100 faire bool = false pour i = 2 to X-1 faire si x div i = 0 alors bool = true next i si !bool alors print X & "est premier" x=x+1 fin tant que -- Pascal
Pascal wrote:
Ba c'est pas très dur. En quelque ligne, suffit juste de se rappeler
qu'un nombre premier n'est divisible que par lui même et un. Commencer à
partir de 2 (un n'est pas premier...) pour être rigoureux. Après il
existe déjà de nombreux algorithmes, mais le plus simple reste celui la.
X : nb a trouver
i, j: deux var
x = 2
Tant que X <100 faire
pour i = 2 to X-1 faire
si x div i = 0 print X
next i
x=x+1
fin tant que
Quel bille! plutot ça :
X : nb a trouver
i : var
bool
x = 2
Tant que X <100 faire
bool = false
pour i = 2 to X-1 faire
si x div i = 0 alors bool = true
next i
si !bool alors print X & "est premier"
x=x+1
fin tant que
--
Pascal
Ba c'est pas très dur. En quelque ligne, suffit juste de se rappeler qu'un nombre premier n'est divisible que par lui même et un. Commencer à partir de 2 (un n'est pas premier...) pour être rigoureux. Après il existe déjà de nombreux algorithmes, mais le plus simple reste celui la. X : nb a trouver i, j: deux var
x = 2 Tant que X <100 faire pour i = 2 to X-1 faire si x div i = 0 print X next i x=x+1 fin tant que
Quel bille! plutot ça : X : nb a trouver i : var bool
x = 2 Tant que X <100 faire bool = false pour i = 2 to X-1 faire si x div i = 0 alors bool = true next i si !bool alors print X & "est premier" x=x+1 fin tant que -- Pascal
Driss HANIB
Bonjour moi je ferai plutot Dim Premier as booléen
For X = 3 to 100 step 2 ' car il est inutile de chercher dans les nombres pairs .. Pour I = 2 to Int(X/2) ' car on sait que les diviseurs s'ils existent seront "symétriques" if X mod I = 0 alors premier est faux sortir boucle sinon premier est vrai fin si next I si premier est vrai alors imprimer X fin si Next X
Driss
"Pascal" a écrit dans le message de news:4141b926$0$32457$
Pascal wrote: > > Ba c'est pas très dur. En quelque ligne, suffit juste de se rappeler > qu'un nombre premier n'est divisible que par lui même et un. Commencer à > partir de 2 (un n'est pas premier...) pour être rigoureux. Après il > existe déjà de nombreux algorithmes, mais le plus simple reste celui la. > X : nb a trouver > i, j: deux var > > x = 2 > Tant que X <100 faire > pour i = 2 to X-1 faire > si x div i = 0 print X > next i > x=x+1 > fin tant que >
Quel bille! plutot ça : X : nb a trouver i : var bool
x = 2 Tant que X <100 faire bool = false pour i = 2 to X-1 faire si x div i = 0 alors bool = true next i si !bool alors print X & "est premier" x=x+1 fin tant que -- Pascal
Bonjour moi je ferai plutot
Dim Premier as booléen
For X = 3 to 100 step 2 ' car il est inutile de chercher dans les nombres
pairs ..
Pour I = 2 to Int(X/2) ' car on sait que les diviseurs s'ils existent
seront "symétriques"
if X mod I = 0 alors
premier est faux
sortir boucle
sinon
premier est vrai
fin si
next I
si premier est vrai alors
imprimer X
fin si
Next X
Driss
"Pascal" <pcsl928@yahoo.com> a écrit dans le message de
news:4141b926$0$32457$636a15ce@news.free.fr...
Pascal wrote:
>
> Ba c'est pas très dur. En quelque ligne, suffit juste de se rappeler
> qu'un nombre premier n'est divisible que par lui même et un. Commencer à
> partir de 2 (un n'est pas premier...) pour être rigoureux. Après il
> existe déjà de nombreux algorithmes, mais le plus simple reste celui la.
> X : nb a trouver
> i, j: deux var
>
> x = 2
> Tant que X <100 faire
> pour i = 2 to X-1 faire
> si x div i = 0 print X
> next i
> x=x+1
> fin tant que
>
Quel bille! plutot ça :
X : nb a trouver
i : var
bool
x = 2
Tant que X <100 faire
bool = false
pour i = 2 to X-1 faire
si x div i = 0 alors bool = true
next i
si !bool alors print X & "est premier"
x=x+1
fin tant que
--
Pascal
Bonjour moi je ferai plutot Dim Premier as booléen
For X = 3 to 100 step 2 ' car il est inutile de chercher dans les nombres pairs .. Pour I = 2 to Int(X/2) ' car on sait que les diviseurs s'ils existent seront "symétriques" if X mod I = 0 alors premier est faux sortir boucle sinon premier est vrai fin si next I si premier est vrai alors imprimer X fin si Next X
Driss
"Pascal" a écrit dans le message de news:4141b926$0$32457$
Pascal wrote: > > Ba c'est pas très dur. En quelque ligne, suffit juste de se rappeler > qu'un nombre premier n'est divisible que par lui même et un. Commencer à > partir de 2 (un n'est pas premier...) pour être rigoureux. Après il > existe déjà de nombreux algorithmes, mais le plus simple reste celui la. > X : nb a trouver > i, j: deux var > > x = 2 > Tant que X <100 faire > pour i = 2 to X-1 faire > si x div i = 0 print X > next i > x=x+1 > fin tant que >
Quel bille! plutot ça : X : nb a trouver i : var bool
x = 2 Tant que X <100 faire bool = false pour i = 2 to X-1 faire si x div i = 0 alors bool = true next i si !bool alors print X & "est premier" x=x+1 fin tant que -- Pascal
Pascal
Driss HANIB wrote:
Bonjour moi je ferai plutot Dim Premier as booléen
For X = 3 to 100 step 2 ' car il est inutile de chercher dans les nombres pairs ..
X devrait commencé à 2 pour deux raisons : - moi je comprends l'énoncé comme écrire un algorithme permettant de trouver les nb premiers. Pour moi il faut donc commencer immédiatement après 1, vu que lui est un cas particulier. Après si on demande une optimiisation, on peut effectivement commencé à 3 et faire un pas de 2, etc... - 2 est premier, et là tu l'oublies.
Pour I = 2 to Int(X/2) ' car on sait que les diviseurs s'ils existent seront "symétriques"
Normalement c'esr racine carré qu'il faut prendre. Ca marche aussi avec Int(X/2) car Int(X/2) > sqrt(X)
if X mod I = 0 alors premier est faux sortir boucle sinon premier est vrai fin si next I si premier est vrai alors imprimer X fin si Next X
Driss
En enlevant ta condition sinon, ton algo pourrait être plus rapide. -- Pascal
Driss HANIB wrote:
Bonjour moi je ferai plutot
Dim Premier as booléen
For X = 3 to 100 step 2 ' car il est inutile de chercher dans les nombres
pairs ..
X devrait commencé à 2 pour deux raisons :
- moi je comprends l'énoncé comme écrire un algorithme permettant de
trouver les nb premiers. Pour moi il faut donc commencer immédiatement
après 1, vu que lui est un cas particulier. Après si on demande une
optimiisation, on peut effectivement commencé à 3 et faire un pas de 2,
etc...
- 2 est premier, et là tu l'oublies.
Pour I = 2 to Int(X/2) ' car on sait que les diviseurs s'ils existent
seront "symétriques"
Normalement c'esr racine carré qu'il faut prendre. Ca marche aussi avec
Int(X/2) car Int(X/2) > sqrt(X)
if X mod I = 0 alors
premier est faux
sortir boucle
sinon
premier est vrai
fin si
next I
si premier est vrai alors
imprimer X
fin si
Next X
Driss
En enlevant ta condition sinon, ton algo pourrait être plus rapide.
--
Pascal
Bonjour moi je ferai plutot Dim Premier as booléen
For X = 3 to 100 step 2 ' car il est inutile de chercher dans les nombres pairs ..
X devrait commencé à 2 pour deux raisons : - moi je comprends l'énoncé comme écrire un algorithme permettant de trouver les nb premiers. Pour moi il faut donc commencer immédiatement après 1, vu que lui est un cas particulier. Après si on demande une optimiisation, on peut effectivement commencé à 3 et faire un pas de 2, etc... - 2 est premier, et là tu l'oublies.
Pour I = 2 to Int(X/2) ' car on sait que les diviseurs s'ils existent seront "symétriques"
Normalement c'esr racine carré qu'il faut prendre. Ca marche aussi avec Int(X/2) car Int(X/2) > sqrt(X)
if X mod I = 0 alors premier est faux sortir boucle sinon premier est vrai fin si next I si premier est vrai alors imprimer X fin si Next X
Driss
En enlevant ta condition sinon, ton algo pourrait être plus rapide. -- Pascal
Driss HANIB
Salut pascal,
tu as raison
pour 2 c'est vrai je le comptais d'office comme rpemier mais rigoureusement il faut le mettre. ensuite ma langue a fourché et effectivment je pensais racine carrée
comme quoi en écrivant trop vite une réponse on arrive à un dérapage fatal .lol
Driss "Pascal" a écrit dans le message de news:4142cfb2$0$32632$
Driss HANIB wrote: > Bonjour moi je ferai plutot > Dim Premier as booléen > > For X = 3 to 100 step 2 ' car il est inutile de chercher dans les
nombres
> pairs ..
X devrait commencé à 2 pour deux raisons : - moi je comprends l'énoncé comme écrire un algorithme permettant de trouver les nb premiers. Pour moi il faut donc commencer immédiatement après 1, vu que lui est un cas particulier. Après si on demande une optimiisation, on peut effectivement commencé à 3 et faire un pas de 2, etc... - 2 est premier, et là tu l'oublies.
> Pour I = 2 to Int(X/2) ' car on sait que les diviseurs s'ils
existent
> seront "symétriques"
Normalement c'esr racine carré qu'il faut prendre. Ca marche aussi avec Int(X/2) car Int(X/2) > sqrt(X)
> if X mod I = 0 alors > premier est faux > sortir boucle > sinon > premier est vrai > fin si > next I > si premier est vrai alors > imprimer X > fin si > Next X > > Driss
En enlevant ta condition sinon, ton algo pourrait être plus rapide. -- Pascal
Salut pascal,
tu as raison
pour 2 c'est vrai je le comptais d'office comme rpemier mais rigoureusement
il faut le mettre.
ensuite ma langue a fourché et effectivment je pensais racine carrée
comme quoi en écrivant trop vite une réponse on arrive à un dérapage fatal
.lol
Driss
"Pascal" <pcsl928@yahoo.com> a écrit dans le message de
news:4142cfb2$0$32632$636a15ce@news.free.fr...
Driss HANIB wrote:
> Bonjour moi je ferai plutot
> Dim Premier as booléen
>
> For X = 3 to 100 step 2 ' car il est inutile de chercher dans les
nombres
> pairs ..
X devrait commencé à 2 pour deux raisons :
- moi je comprends l'énoncé comme écrire un algorithme permettant de
trouver les nb premiers. Pour moi il faut donc commencer immédiatement
après 1, vu que lui est un cas particulier. Après si on demande une
optimiisation, on peut effectivement commencé à 3 et faire un pas de 2,
etc...
- 2 est premier, et là tu l'oublies.
> Pour I = 2 to Int(X/2) ' car on sait que les diviseurs s'ils
existent
> seront "symétriques"
Normalement c'esr racine carré qu'il faut prendre. Ca marche aussi avec
Int(X/2) car Int(X/2) > sqrt(X)
> if X mod I = 0 alors
> premier est faux
> sortir boucle
> sinon
> premier est vrai
> fin si
> next I
> si premier est vrai alors
> imprimer X
> fin si
> Next X
>
> Driss
En enlevant ta condition sinon, ton algo pourrait être plus rapide.
--
Pascal
pour 2 c'est vrai je le comptais d'office comme rpemier mais rigoureusement il faut le mettre. ensuite ma langue a fourché et effectivment je pensais racine carrée
comme quoi en écrivant trop vite une réponse on arrive à un dérapage fatal .lol
Driss "Pascal" a écrit dans le message de news:4142cfb2$0$32632$
Driss HANIB wrote: > Bonjour moi je ferai plutot > Dim Premier as booléen > > For X = 3 to 100 step 2 ' car il est inutile de chercher dans les
nombres
> pairs ..
X devrait commencé à 2 pour deux raisons : - moi je comprends l'énoncé comme écrire un algorithme permettant de trouver les nb premiers. Pour moi il faut donc commencer immédiatement après 1, vu que lui est un cas particulier. Après si on demande une optimiisation, on peut effectivement commencé à 3 et faire un pas de 2, etc... - 2 est premier, et là tu l'oublies.
> Pour I = 2 to Int(X/2) ' car on sait que les diviseurs s'ils
existent
> seront "symétriques"
Normalement c'esr racine carré qu'il faut prendre. Ca marche aussi avec Int(X/2) car Int(X/2) > sqrt(X)
> if X mod I = 0 alors > premier est faux > sortir boucle > sinon > premier est vrai > fin si > next I > si premier est vrai alors > imprimer X > fin si > Next X > > Driss
En enlevant ta condition sinon, ton algo pourrait être plus rapide. -- Pascal
yasminebek
Le mercredi 25 Août 2004 à 17:55 par Toine :
Bonjour,
Lors d'un entretien d'embauche, on m'a demandé d'écrire un algorithme permettant de trouver les 100 premiers nombres premiers... et à ma grande honte, je n'ai pas su le faire. Et même à tête reposée, je n'y arrive pas, alors je sollicite votre aide. Attention, je parle d'un truc simple, pas de se servir de fonctions mathématiques permettant d'optimiser la recherche de nombres premiers supérieurs à X^12. Ca, j'en ai trouvé plein sur le net, mais àa m'a pas beaucoup avancé :)
Question subsidaire: sur quel forum poster ce genre de questions ? J'ai posté ici parceque je dois écrire le programme en VB, mais je suppose qu'il y'a un forum plus approprié.
Merci d'avance pour vos lumières
svp jai besoin d'un algorithme des nombres pairs et impairs en langage VB
Le mercredi 25 Août 2004 à 17:55 par Toine :
Bonjour,
Lors d'un entretien d'embauche, on m'a demandé d'écrire un
algorithme
permettant de trouver les 100 premiers nombres premiers... et à ma
grande
honte, je n'ai pas su le faire.
Et même à tête reposée, je n'y arrive pas, alors je
sollicite votre aide.
Attention, je parle d'un truc simple, pas de se servir de fonctions
mathématiques permettant d'optimiser la recherche de nombres premiers
supérieurs à X^12. Ca, j'en ai trouvé plein sur le net,
mais àa m'a pas
beaucoup avancé :)
Question subsidaire: sur quel forum poster ce genre de questions ? J'ai
posté ici parceque je dois écrire le programme en VB, mais je
suppose qu'il
y'a un forum plus approprié.
Merci d'avance pour vos lumières
svp jai besoin d'un algorithme des nombres pairs et impairs en langage VB
Lors d'un entretien d'embauche, on m'a demandé d'écrire un algorithme permettant de trouver les 100 premiers nombres premiers... et à ma grande honte, je n'ai pas su le faire. Et même à tête reposée, je n'y arrive pas, alors je sollicite votre aide. Attention, je parle d'un truc simple, pas de se servir de fonctions mathématiques permettant d'optimiser la recherche de nombres premiers supérieurs à X^12. Ca, j'en ai trouvé plein sur le net, mais àa m'a pas beaucoup avancé :)
Question subsidaire: sur quel forum poster ce genre de questions ? J'ai posté ici parceque je dois écrire le programme en VB, mais je suppose qu'il y'a un forum plus approprié.
Merci d'avance pour vos lumières
svp jai besoin d'un algorithme des nombres pairs et impairs en langage VB