Nombre premiers et calculer la racine carrée d'un nombre

Bonjour,

J’essaie d’écrire un petit programme java qui détermine si un nombre est premier ou non, ça donne ça:

if (nombreEntré % 2 != 0)
System.out.println(nombreEntré +" est un nombre premier");
else if(nombreEntré % 2 == 0 && nombreEntré != 2)
System.out.println(nombreEntré +" n’est pas un nombre premier");

mais si je rentre 51 (qui n’est pas un nombre premier) il me dit qu’il est premier parce qu’il est impair. Ma question est de quel façon faut-il modifier le programme pour qu’il détecte les nombre impairs composés comme étant non premiers?

Et je cherche à exprimer la racine carrée d’un nombre, mais sans math.sqrt(), plutôt avec des boucle if…else ou while. y’a t’il un moyen?

Merci d’avance

Heu, ce n’est pas l’algo que j’ai appris.

Normalement, tu élimines :

1, 2 => premier d’office
2n => les nombres pairs ne sont pas premiers

Puis tu divises avec tous les diviseurs inférieurs à int(racine§).


Ex: p = 51
51 <= 2 => faux
51 % 2 == 0 => faux
for (int i = 3, n = (int)Math.sqrt(p); i <= n; ++i) {
  if (p % i == 0) => faux
}

Pour le coup de la racine, cf. google, ça fait longtemps que j’ai vu ça et j’ai plus qu’oublié mes cours d’algo sur ça.

Salut.

algo nombre premier => algo nombre premier

calculer la racine carré d’un nombre => algo racine carré