cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
17 juil. 2007 à 12:36
ansu95
Messages postés1Date d'inscriptiondimanche 1 mars 2009StatutMembreDernière intervention 2 mars 2009
-
2 mars 2009 à 22:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
ansu95
Messages postés1Date d'inscriptiondimanche 1 mars 2009StatutMembreDernière intervention 2 mars 2009 2 mars 2009 à 22:54
Public boolean isPremier(int n)
{
if(n<=1) return false;
for(int i = 2;i*i<=n;i++)
{
if (n%i ==0)
return false;
i++
}
return true;
}
theguitou
Messages postés75Date d'inscriptionmardi 9 septembre 2003StatutMembreDernière intervention14 janvier 200935 28 juil. 2007 à 20:12
while(i*i <= n)
Et c'est encore plus optimisé ...
atha2
Messages postés3Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention26 juillet 2007 26 juil. 2007 à 17:26
voici une version un peu plus optimisée:
public boolean isPremier(int n){
if(n < 2){//si inferieur à 2, on retourn faux
return false;
}
int i = 2;
/
while(i <= Math.sqrt(n)){//2 et 3 sont premier donc on ne rentre pas dans la boucle
if(n % i == 0){si un diviseur on retourne faux(i != && i <i <= Math.sqrt(n)<n)
return false;
}
i++;
}
return true;
}
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 17 juil. 2007 à 14:09
non non, tu as tout à fait raison : ca sert à rien d'aller jusqu'à n / 2 : la racine de n est suffisante ce qui est bien plus efficace que n / 2 !
cs_lrequena
Messages postés10Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention24 juillet 2008 17 juil. 2007 à 14:00
une des optimisations simples possibles serait :
public boolean isPremier(int n)
{
boolean isPremier = true;
if (n < 2)
{
isPremier = false;
}
else
{
for (int i = 2; i < Math.sqrt(n)+1; i++)
{
if (n !i && n % i 0)
{
isPremier = false;
}
}
}
return isPremier;
}
Darksidious, dis moi si je me trompe ;)
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 17 juil. 2007 à 12:36
Mouais, c'est l'algorithme le plus basique (et le moins optimisé surtout) qu'on peut trouver pour tester un nombre premier, mais bon... ca a au moins le mérite de fonctionner à tout les coups.
2 mars 2009 à 22:54
{
if(n<=1) return false;
for(int i = 2;i*i<=n;i++)
{
if (n%i ==0)
return false;
i++
}
return true;
}
28 juil. 2007 à 20:12
Et c'est encore plus optimisé ...
26 juil. 2007 à 17:26
public boolean isPremier(int n){
if(n < 2){//si inferieur à 2, on retourn faux
return false;
}
int i = 2;
/
while(i <= Math.sqrt(n)){//2 et 3 sont premier donc on ne rentre pas dans la boucle
if(n % i == 0){si un diviseur on retourne faux(i != && i <i <= Math.sqrt(n)<n)
return false;
}
i++;
}
return true;
}
17 juil. 2007 à 14:09
17 juil. 2007 à 14:00
public boolean isPremier(int n)
{
boolean isPremier = true;
if (n < 2)
{
isPremier = false;
}
else
{
for (int i = 2; i < Math.sqrt(n)+1; i++)
{
if (n !i && n % i 0)
{
isPremier = false;
}
}
}
return isPremier;
}
Darksidious, dis moi si je me trompe ;)
17 juil. 2007 à 12:36