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;
}
}