[JAVA] Juger les nombres premiers

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

Juger les nombres premiers
Calculer des nombres premiers en Java
Comment trouver les nombres premiers Java
[Ruby] Un programme qui détermine les nombres premiers
Essayez d'afficher le nombre premier en utilisant le type booléen
[Java] Trouvez le nombre premier avec le tamis Eratostenes