acx01b
Messages postés280Date d'inscriptiondimanche 7 septembre 2003StatutMembreDernière intervention 8 juillet 2014
-
16 févr. 2008 à 10:00
jimonnet
Messages postés10Date d'inscriptionmardi 25 septembre 2007StatutMembreDernière intervention 6 mai 2008
-
4 mai 2008 à 20:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Tu as tout à fait raison, c'est un problème au niveau du test conditionnel: ça ne marche pas pour tout les carrés de nombres premiers...
Je corrige ça tout de suite.
Bien entendu, tu es libre d'utiliser ce bout de code (et tu n'as pas besoin de me mentionner dans la section "crédit" ;) )
jimonnet
Messages postés10Date d'inscriptionmardi 25 septembre 2007StatutMembreDernière intervention 6 mai 2008 20 févr. 2008 à 11:22
j'ai constater une erreur importante :
lorsque l'on demande de factoriser 25
le programme repond 1*25 au lieu de 1*5^2
jimonnet
Messages postés10Date d'inscriptionmardi 25 septembre 2007StatutMembreDernière intervention 6 mai 2008 20 févr. 2008 à 11:00
Salut programme super
mais n'y-a-t-il pas moyen de depasser les nombres
de 12 chiffre ?
Je souhaiterait reutiliser ton code pour un projet de suite aliquote
Puis-je ?
C'est beaucoup plus court niveau code, mais il fait plus de calcul...
Par contre, le premier while, je pige pas la condition qu'il teste. En plus, ton programme va écrire 15 fois "2" dans le tableau si par exemple 2 divise n 15 fois... il serait préférable qu'il stocke "2" et dans la deuxième ligne 15 (enfin, à mon avis...)
Mais sinon, ça à l'air pas mal. Je vais tester ça de suite.
acx01b
Messages postés280Date d'inscriptiondimanche 7 septembre 2003StatutMembreDernière intervention 8 juillet 20146 16 févr. 2008 à 10:00
salut je peux faire encore plus court
int tab[MAX]; // la factorisation
int factoriser(int n) { // n : le nombre à factoriser
int i, d;
i = 0;
while (!(n & 1)) { tab[i++] = 2; n >>= 1; }
d = 3;
while (n != 1) {
while(!(n % d)) { tab[i++] = d; n /= d; }
d += 2;
}
return i;
}
4 mai 2008 à 20:21
finalement je m'en suis pas servi
parce que j'ai trouvé comment faire plus court
Mais merci quand même
20 févr. 2008 à 17:08
Ce programme va bien me servir !!
20 févr. 2008 à 11:55
Je corrige ça tout de suite.
Bien entendu, tu es libre d'utiliser ce bout de code (et tu n'as pas besoin de me mentionner dans la section "crédit" ;) )
20 févr. 2008 à 11:22
lorsque l'on demande de factoriser 25
le programme repond 1*25 au lieu de 1*5^2
20 févr. 2008 à 11:00
mais n'y-a-t-il pas moyen de depasser les nombres
de 12 chiffre ?
Je souhaiterait reutiliser ton code pour un projet de suite aliquote
Puis-je ?
16 févr. 2008 à 13:06
Au fait Acx01B, lorque je compile ton code, il me dit "Segmentation fault (core dumped)" :(
16 févr. 2008 à 12:25
16 févr. 2008 à 10:11
Par contre, le premier while, je pige pas la condition qu'il teste. En plus, ton programme va écrire 15 fois "2" dans le tableau si par exemple 2 divise n 15 fois... il serait préférable qu'il stocke "2" et dans la deuxième ligne 15 (enfin, à mon avis...)
Mais sinon, ça à l'air pas mal. Je vais tester ça de suite.
16 févr. 2008 à 10:00
int tab[MAX]; // la factorisation
int factoriser(int n) { // n : le nombre à factoriser
int i, d;
i = 0;
while (!(n & 1)) { tab[i++] = 2; n >>= 1; }
d = 3;
while (n != 1) {
while(!(n % d)) { tab[i++] = d; n /= d; }
d += 2;
}
return i;
}