Algorithme nombre premier

Fermé
brextor Messages postés 27 Date d'inscription mercredi 27 août 2008 Statut Membre Dernière intervention 14 mars 2010 - 4 déc. 2009 à 22:48
brextor Messages postés 27 Date d'inscription mercredi 27 août 2008 Statut Membre Dernière intervention 14 mars 2010 - 6 déc. 2009 à 22:06
Bonjour,
Bon voila je dois faite un algorithme sur les nombre premier et la décomposition des nombre premier pour la première partie sa va mais la seconde ma prof me dit qu'il y 'a quelquechose qui gène je ne voit pas quoi :
Voile l'algo:
Variable
a(1...999) // tableau d'entier
Prem(1...999) // tableau nombre premier
f(1,,,100) // tableau décompositon
x :entier // x correspond au multiple (*2,*3 etc)
i,t,m : entier // i,t numéro pour les tableaux
N : entier // nombre a décomposer
Debut
Pour i ←2 À 1000 // première étape
a(i) ← i
Fin pour
Pour i ←2 À 1000 // seconde étape
x ← 1, t ← 1
If a(i) ≠ 0
Tant que m <= 1000
x ← x+1
m ← a(i)*x
a(m)<-0
Fin Tant que
Fin si
Fin pour
Pour i ←2 À 1000 //troisième étape
If a(i) ≠ 0
prem(t) ← a(i)
t ← t+1
Fin si
Fin pour
y ← 1 // décomposition en produit de facteur premier
Répéter
Afficher « N= avec 1<N<10 001
Saisir N
Tant que 1<N<10 001
Répeter
Pour t ←2 à N
Tant que part dec(N/prem(t))=0
f(y) ← prem(t)
y ← y+1
N ← N/ prem(t)
Fin Tant que
Fin pour
Tant que N ≠ prem(t)
Afficher «  décomposition N = », f(y)


La ou sa bloquer je pense c'est que j'avais pas mit la plupart des commentaires donc elle voyait pas quoi correspondait a quoi . Cependant j'ai un doute sur le répéter ... tant que je me demande si il va y revenir a chaque fois on si il va faire tous le pour et apres répéter encore tous le pour etc

Voila merci (en clair est ce que le programme a l'air bon ou pas ^^ )

2 réponses

lucieb31 Messages postés 345 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 28 juillet 2012 62
5 déc. 2009 à 15:36
juste une chose, a quoi sert ton "if(a(i) != 0" ? alors que tu rempli a avec des entiers de 2 à 1000, a(i) ne sera jamais egal a zero si ?
2
brextor Messages postés 27 Date d'inscription mercredi 27 août 2008 Statut Membre Dernière intervention 14 mars 2010 5
6 déc. 2009 à 22:06
Le truc la c'est que il donnait une méthode qui était:
si n est premier alors tous les multiples de n ne sont pas premier donc en clair je prend A'i) dif de 0 au départ je vais tomber sur deux il est premier sa tombe bien =, la je prend tous les multiple de 2 et je les remplace par 0 dans le tableau donc apres si le nombre est = 0 on passe sinon on prend tous ses multiples et on les remplaces par 0
0