[java] nombre premier [Résolu/Fermé]

Signaler
Messages postés
15
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
2 janvier 2006
-
 melissa -
Bonjour,

Est-ce que l'un d'entre vous aurait un programme en Java qui affiche un message disant si l'entier n (lu sur la ligne de commande) est un nombre premier ou non? SVP

Merci d'avance.

6 réponses

Messages postés
623
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
11 novembre 2012
964
	public boolean isPremier(int n) {
		boolean isPremier = true;
		if (n < 0) {
			isPremier = false;
		} else if (n != 0 && n != 1) {
			for (int i = 2; i <= n/2; i++) {
				if (n != i && n % i == 0) {
					isPremier = false;
					break;
				}
			}
		}
		return isPremier;
	}


;-)
HackTrack
40
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 87045 internautes nous ont dit merci ce mois-ci

Bonjour à tous,

HackTrack, ton algo marche très bien! Y'a juste un petit souci : il donne true pour le nombre 1 alors que ce n'est pas un nombre premier. Mais ça devrait aller je devrais bien arriver à corriger ça....

En tout cas, un énorme merci !!!

A bientôt.
boolean isPremier = false;
;-)
est ce que vous pouvez nous expliquez pourquoi vous avez utilisé ce test "i <= n/2" dans la boucle
Messages postés
39
Date d'inscription
mercredi 17 mars 2004
Statut
Membre
Dernière intervention
14 février 2007
12
public boolean isPremier(int n){
if(n<=1) return false;
for(int i = 2;i*i<=n;i++) if (n%i ==0) return false;
return true;
}

si n n'est pas premier, alros il existe un nombre i<=sqrt(n) et un nombre j <=n tels que i*j==n
dans mon algo, on s'arrete bien avant n/2, plus le nombre est grand, plus le gain de temps est important(par exemple, pour l'ordre de 10000: le mien=> on s'arete vers 100, pour celui de hacktrack tu t'arreterais à 5000, soit 50 fois plus de temps..)
Messages postés
123
Date d'inscription
vendredi 8 juillet 2005
Statut
Membre
Dernière intervention
14 septembre 2006
21
je n'ai pas le code source mais si tu souhaites réaliser le code par toi meme je peux te donner un "petit" coup de pouce.


i entier=1
pas_premier booleen (initialisé a faux)

lire (nombre)
Tu fais une boucle while dont la condition est (i>partie entière de (racine(nombre))ou(pas_premier=true){
si (reste de la division par i de nombre est nul) alors pa_premier =true
incrementation de i
}
si (pa_premier = true) alors écrire (nombre est pa premier) sinon écrire(nombre est premier)
Messages postés
5939
Date d'inscription
mercredi 26 mai 2004
Statut
Contributeur
Dernière intervention
18 septembre 2009
206
salut,

tu trouvera ici les algo
http://www.haypocalc.com/maths/algo_premier.php
ya plus qu'a retranscrire en java.
Messages postés
15
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
2 janvier 2006

Merci pour vos réponses.

J'ai surtout essayé avec le site haypocalc car les histoires de racine j'avoue que c'est pas mon truc :-).
Malheureusement ça fait deux soirs que j'essaye de réécrire en java mais y'a un truc que j'arrive pas à capter, je commence à désespérer... En attendant, si quelqu'un a une autre suggestion je suis preneuse!

Salut babyglo

tu trouveras la réponse dans le paradis des nombres premiers en java

http://jc.michel.free.fr/premiers.php


bxflash

Tu y arrives en java?

Je suis pas fortiche, plus j'étudie et moins j'y comprends...