cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 2006
-
27 avril 2002 à 20:31
g0belin
Messages postés155Date d'inscriptionjeudi 6 décembre 2001StatutMembreDernière intervention19 avril 2010
-
28 avril 2002 à 10:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
g0belin
Messages postés155Date d'inscriptionjeudi 6 décembre 2001StatutMembreDernière intervention19 avril 2010 28 avril 2002 à 10:34
oui en effet tu a raison mais se code j'aurai du le regarder avant de le mettre sur le web j'ai oublié de l'optimiser
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 27 avril 2002 à 20:31
Tu pourrais gagner beaucoup de temps dans la recherche des nombres premiers de la manière suivante :
i:=2;
j:=0;
limite:=(nb+1)Div 2;
while (i <=Limite)And(j<>1) do if (nb mod i) = 0 then j:=1 Else Inc(i)
if j<>1 then result:=result+IntTOStr(nb)+', ';
Il suffit de balayer la moité de 2 à N car si X divise NB et X>N/2 alors NB/X aurait divisé NB et NB/X<NB/2.
Ensuite dès qu'un diviseur est trouvé, ce n'est plus la peine de finir la boucle.
28 avril 2002 à 10:34
27 avril 2002 à 20:31
i:=2;
j:=0;
limite:=(nb+1)Div 2;
while (i <=Limite)And(j<>1) do if (nb mod i) = 0 then j:=1 Else Inc(i)
if j<>1 then result:=result+IntTOStr(nb)+', ';
Il suffit de balayer la moité de 2 à N car si X divise NB et X>N/2 alors NB/X aurait divisé NB et NB/X<NB/2.
Ensuite dès qu'un diviseur est trouvé, ce n'est plus la peine de finir la boucle.