Test sur nombres premiers

Soyez le premier à donner votre avis sur cette source.

Vue 10 398 fois - Téléchargée 552 fois

Description

Ce code permet à l'utilisateur de saisir un nombre et de savoir s'il s'agit d'un nombre premier.

3 classes composent ce code :

- un lanceur ne contenant qu'un "main"
- une classe gérant l'IHM
- une classe effectuant le traitement.

L'archive contient également un jar exécutable, si ça intéresse quelqu'un.

Merci pour vos commentaires !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

ansu95
Messages postés
1
Date d'inscription
dimanche 1 mars 2009
Statut
Membre
Dernière intervention
2 mars 2009

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és
75
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
14 janvier 2009
25
while(i*i <= n)

Et c'est encore plus optimisé ...
atha2
Messages postés
3
Date d'inscription
jeudi 16 novembre 2006
Statut
Membre
Dernière intervention
26 juillet 2007

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és
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
94
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és
10
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
24 juillet 2008

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 ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (amundain)