Un programme qui détermine si le nombre entré en Java est un nombre premier. Si le nombre n'est pas un nombre premier, le nombre premier maximum sous la valeur d'entrée est affiché.
Main.java
import java.util.Scanner;
public class Main{
//Nombre premier affiché
static int primeNum = 0;
//Indicateur qui détermine si la valeur d'entrée est amorcée
static boolean isPrime = true;
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num;
//Refaire lors de la saisie de nombres inférieurs à 2 ou non entiers
do {
try {
num = Integer.parseInt(sc.next());
if(num < 2) {
System.out.println("Veuillez saisir un entier supérieur ou égal à 2.");
}
}catch(NumberFormatException e) {
System.out.println("Veuillez saisir un entier demi-largeur.");
num = 0;
}
}while(num < 2);
//Trouver un nombre premier
searchPrime(num);
//Message à afficher
String msg = String.format("%d est un nombre premier.", num);
if(!isPrime) {//Changer le message si la valeur d'entrée n'est pas prime
msg = String.format("%d n'était pas un nombre premier. Fermer les nombres premiers%C'est d."
,num,primeNum);
}
System.out.println(msg);//afficher
sc.close();
}
public static void searchPrime(int num){
if(checkPrime(num)){//S'il s'agit d'un nombre premier, assignez l'argument à primeNum
primeNum = num;
return ;
}//S'il ne s'agissait pas d'un nombre premier, cochez un nombre plus petit et un indicateur qui n'était pas un nombre premier
isPrime = false;
searchPrime(num - 1);
}
public static boolean checkPrime(int num){
if(num < 2){//S'il vaut 2 ou moins, ce n'est pas un nombre premier
return false;
}
if(num == 2){//Si c'est 2, c'est un nombre premier
return true;
}
if(num % 2 == 0){//Si c'est pair, ce n'est pas un nombre premier
return false;
}
//Découvrez s'il est divisible par un nombre supérieur ou égal à 3 et inférieur ou égal à la racine carrée de num
for(int i = 3; i <= Math.sqrt(num); i ++){
if(num % i == 0){//S'il est divisible, ce n'est pas un nombre premier
return false;
}
}
//S'il n'est pas divisible, un nombre premier
return true;
}
}
Recommended Posts