Java Programm zum Drucken von Prime Numbers von 1 um 100
โก Intelligente Zusammenfassung
Programm zum Drucken von Primzahlen von 1 bis 100 in Java Das Programm durchsucht alle Werte in einem Bereich und gibt diejenigen aus, die genau zwei Teiler haben. Dieser Artikel erklรคrt die Definition, die Prรผfmethode, das vollstรคndige Programm, das Sieb des Eratosthenes sowie einen Leistungsvergleich mit verifizierten Ergebnissen.

Was ist eine Primzahl?
A Primzahl Eine Primzahl ist eine Zahl, die nur durch eins oder sich selbst teilbar ist. Sie ist eine natรผrliche Zahl grรถรer als eins, die nicht das Produkt zweier kleinerer natรผrlicher Zahlen ist. Beispielsweise ist 11 nur durch eins oder sich selbst teilbar. Weitere Primzahlen sind 2, 3, 5, 7, 11, 13, 17 usw.
Hinweis: 0 und 1 sind keine Primzahlen. 2 ist die einzige gerade Primzahl.
Zwischen 1 und 100 gibt es genau 25 Primzahlen. Die untenstehende Tabelle gruppiert sie nach Dekaden, wodurch das Muster der abnehmenden Anzahl mit zunehmenden Werten sichtbar wird.
| Abdeckung | Prim Numbers | Zu Zรคhlen |
|---|---|---|
| 1 โ 20 | 2, 3, 5, 7, 11, 13, 17, 19 | 8 |
| 21 โ 40 | 23, 29, 31, 37 | 4 |
| 41 โ 60 | 41, 43, 47, 53, 59 | 5 |
| 61 โ 80 | 61, 67, 71, 73, 79 | 5 |
| 81 โ 100 | 83, 89, 97 | 3 |
So drucken Sie Prime Numbers Zwischen 1 und 100 Programm in Java
Unten ist die Java Programm zum Drucken von Primzahlen von 1 bis 100:
Programmlogik:
- Die Hauptmethode der Primzahlprogramm in Java enthรคlt eine Schleife, um die Primzahlen zwischen 1 und 100 nacheinander zu รผberprรผfen.
- Die Hauptmethode ruft die Methode auf
CheckPrimeum festzustellen, ob eine Zahl eine Primzahl ist in Java oder nicht. - Wir mรผssen eine Eingabezahl, beispielsweise 17, durch die Zahlen von 2 bis 17 teilen und den Rest รผberprรผfen. Ist der Rest 0, ist die Zahl keine Primzahl.
- Keine Zahl ist durch mehr als die Hรคlfte von sich selbst teilbar. Daher mรผssen wir nur die Zahl, die geprรผft werden soll, durch 2 teilen. Wenn die Eingabe 17 ist, ist die Hรคlfte 8.5, und die Schleife durchlรคuft die Werte von 2 bis 8.
- If
numberToCheckWenn die Zahl vollstรคndig durch eine andere Zahl teilbar ist, geben wir false zurรผck, und die Schleife wird abgebrochen. - If
numberToCheckprim ist, geben wir true zurรผck. - In der Hauptmethode fรผr Primzahlen 1 bis 100 in Java, prรผfen Sie, ob isPrime ist
TRUEund addiere den Wert zur PrimzahlNumbersGefundene Zeichenkette. - Drucken Sie zuletzt Primzahlen von 1 bis 100 in Java.
Die Auslagerung der รberprรผfung in eine eigene Methode ermรถglicht die Wiederverwendbarkeit des Programms. Die Methode `CheckPrime` kann mit jedem beliebigen Obergrenzenwert aufgerufen werden, indem einfach die Variable `maxCheck` geรคndert wird.
public class PrimeNumbers {
public static void main(String[] args) {
int i;
int num = 0;
int maxCheck = 100; // maxCheck limit till which you want to find prime numbers
boolean isPrime = true;
//Empty String
String primeNumbersFound = "";
//Start loop 2 to maxCheck
for (i = 2; i <= maxCheck; i++) {
isPrime = CheckPrime(i);
if (isPrime) {
primeNumbersFound = primeNumbersFound + i + " ";
}
}
System.out.println("Prime numbers from 1 to " + maxCheck + " are:");
// Print prime numbers from 1 to maxCheck
System.out.println(primeNumbersFound);
}
public static boolean CheckPrime(int numberToCheck) {
int remainder;
for (int i = 2; i <= numberToCheck / 2; i++) {
remainder = numberToCheck % i;
//if remainder is 0 then the number is not prime and we break the loop. Else continue the loop
if (remainder == 0) {
return false;
}
}
return true;
}
}
Erwartete Ausgabe:
Die Ausgabe der Primzahlen zwischen 1 und 100 in der Java Programm werden:
Prime numbers from 1 to 100 are: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Der Wert 2 wird รผbergeben, weil die innere Schleifenbedingung erfรผllt ist. i <= 2 / 2 bewertet zu 2 <= 1Das Ergebnis ist sofort falsch, daher gibt die Methode ohne eine einzige Division true zurรผck.
Optimierte Version unter Verwendung der Quadratwurzelgrenze
Das Halbieren der Zahl ist zwar korrekt, fรผhrt aber zu unnรถtigen Rechenoperationen. Teiler treten immer paarweise um die Quadratwurzel auf, daher hat jeder Faktor oberhalb von โn einen Partner darunter, der bereits geprรผft wurde.
public class PrimeNumbersOptimized { public static void main(String[] args) { int maxCheck = 100; int count = 0; StringBuilder result = new StringBuilder(); for (int i = 2; i <= maxCheck; i++) { if (isPrime(i)) { result.append(i).append(" "); count++; } } System.out.println("Prime numbers from 1 to " + maxCheck + " are:"); System.out.println(result.toString().trim()); System.out.println("Total primes found: " + count); } public static boolean isPrime(int n) { if (n <= 1) return false; if (n == 2) return true; if (n % 2 == 0) return false; // test only odd divisors up to the square root for (int i = 3; i * i <= n; i += 2) { if (n % i == 0) return false; } return true; } }
Ausgang:
Prime numbers from 1 to 100 are: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 Total primes found: 25
๐ก Tipp: StringBuilder ersetzt wiederholte String-Verkettungen innerhalb der Schleife. += on a String erzeugt ein neues Objekt, das messbar wird, sobald die obere Grenze mehrere Tausend erreicht.
Print Prime Numbers Verwendung des Siebs des Eratosthenes
Wenn alle Primzahlen eines Bereichs benรถtigt werden, ist die Probedivision das falsche Verfahren. Das Sieb des Eratosthenes erstellt ein boolesches Array, markiert die Vielfachen jeder Primzahl als zusammengesetzt und liest alle รผbrigen, nicht markierten Zahlen aus.
Die Methode funktioniert in drei Schritten:
- Erstelle ein boolesches Array der Grรถรe n+1 und gehe davon aus, dass jeder Index ab 2 eine Primzahl ist.
- Beginnend mit 2, markiere jedes Vielfache der aktuellen Primzahl als zusammengesetzte Zahl.
- Gehe zum nรคchsten nicht markierten Index und wiederhole den Vorgang, bis die Quadratwurzel von n erreicht ist.
import java.util.Arrays; public class SieveOfEratosthenes { public static void main(String[] args) { int n = 100; boolean[] composite = new boolean[n + 1]; for (int p = 2; p * p <= n; p++) { if (!composite[p]) { // start at p*p because smaller multiples are already marked for (int multiple = p * p; multiple <= n; multiple += p) { composite[multiple] = true; } } } StringBuilder result = new StringBuilder(); for (int i = 2; i <= n; i++) { if (!composite[i]) { result.append(i).append(" "); } } System.out.println("Prime numbers from 1 to " + n + " are:"); System.out.println(result.toString().trim()); } }
Ausgang:
Prime numbers from 1 to 100 are: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Vergleich der drei Ansรคtze
Alle drei Programme geben dieselben 25 Werte aus, daher hรคngt die Wahl ausschlieรlich von der Grรถรe des Wertebereichs ab.
| Ansatz | Zeitliche Komplexitรคt | Zusรคtzlicher Speicher | beste Auswahl |
|---|---|---|---|
| Probeteilung bis n/2 | O(nยฒ) | O (1) | Bis zu einigen Tausend |
| Probedivision zu โn | O(nโn) | O (1) | Bis zu einigen hunderttausend |
| Sieb von Eratosthenes | O(n log log n) | O (n) | Millionen von Werten |
Schauen Sie in unserem Programm nach, um herauszufinden Primzahlen aus jeder beliebigen Eingabezahl Wenn ein einzelner Wert anstelle eines Bereichs geprรผft werden muss. Weitere รbungen mit Schleifen finden Sie im Abschnitt [Link einfรผgen]. Fibonacci-Folge in Java, hat das Java Palindromprogrammund die Bubble Sortieralgorithmus in JavaDas vom Sieb verwendete boolesche Array wird im Folgenden nรคher erlรคutert. Java Arrays.
