[JAVA] Primzahlen beurteilen

Ein Programm, das bestimmt, ob eine in Java eingegebene Zahl eine Primzahl ist. Wenn die Zahl keine Primzahl ist, wird die maximale Primzahl unter dem Eingabewert angezeigt.

Main.java


import java.util.Scanner;
public class Main{
	//Angezeigte Primzahl
	static int primeNum = 0;
	//Flag, das bestimmt, ob der Eingabewert vorbereitet ist
	static boolean isPrime = true;
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int num;
		//Wiederholen, wenn Zahlen unter 2 oder nicht ganzzahlig eingegeben werden
		do {
			try {
				num = Integer.parseInt(sc.next());
				if(num < 2) {
					System.out.println("Bitte geben Sie eine Ganzzahl größer oder gleich 2 ein.");
				}
			}catch(NumberFormatException e) {
				System.out.println("Bitte geben Sie eine Ganzzahl halber Breite ein.");
				num = 0;
			}
		}while(num < 2);
		//Finde eine Primzahl
		searchPrime(num);
		//Nachricht angezeigt werden
		String msg = String.format("%d ist eine Primzahl.", num);
		if(!isPrime) {//Nachricht ändern, wenn der Eingabewert nicht prim ist
			msg = String.format("%d war keine Primzahl. Primzahlen schließen%Es ist d."
				,num,primeNum);
		}
		System.out.println(msg);//Anzeige
		sc.close();
	}

	public static void searchPrime(int num){
		if(checkPrime(num)){//Wenn es sich um eine Primzahl handelt, weisen Sie das Argument primeNum zu
			primeNum = num;
			return ;
		}//Wenn es keine Primzahl war, überprüfen Sie eine kleinere Zahl und ein Flag, die keine Primzahl waren
		isPrime = false;
		searchPrime(num - 1);
	}

	public static boolean checkPrime(int num){
		if(num < 2){//Wenn es 2 oder weniger ist, ist es keine Primzahl
			return false;
		}
		if(num == 2){//Wenn es 2 ist, ist es eine Primzahl
			return true;
		}
		if(num % 2 == 0){//Wenn es gerade ist, ist es keine Primzahl
			return false;
		}
		//Finden Sie heraus, ob es durch eine Zahl größer oder gleich 3 und kleiner oder gleich der Quadratwurzel von num teilbar ist
		for(int i = 3; i <= Math.sqrt(num); i ++){
			if(num % i == 0){//Wenn es teilbar ist, ist es keine Primzahl
				return false;
			}
		}
		//Wenn nicht teilbar, eine Primzahl
		return true;
	}
}

Recommended Posts

Primzahlen beurteilen
Berechnen Sie Primzahlen in Java
So finden Sie Java-Primzahlen
[Ruby] Ein Programm, das Primzahlen bestimmt
Versuchen Sie, die Primzahl mit dem Booleschen Typ anzuzeigen
[Java] Finden Sie die Primzahl mit dem Eratostenes-Sieb