Java Program til at udskrive Prime Numbers fra 1 til 100
โก Smart opsummering
Program til at udskrive primtal fra 1 til 100 tommer Java scanner alle vรฆrdier i et interval og rapporterer dem med prรฆcis to divisorer. Denne artikel forklarer definitionen, kontrolmetoden, det komplette program, Eratosthenes-sigten og en prรฆstationssammenligning med verificeret output.

Hvad er et primtal?
A Primtal er et tal, der kun er deleligt med รฉn eller sig selv. Det er et naturligt tal stรธrre end รฉn, der ikke er et produkt af to mindre naturlige tal. For eksempel er 11 kun deleligt med รฉn eller sig selv. Andre primtal er 2, 3, 5, 7, 11, 13, 17 osv.
Bemรฆrk: 0 og 1 er ikke primtal. 2 er det eneste lige primtal.
Mellem 1 og 100 er der prรฆcis 25 primtal. Gitteret nedenfor grupperer dem efter รฅrti, hvilket gรธr det udtyndende mรธnster synligt, efterhรฅnden som vรฆrdierne vokser.
| Rรฆkkevidde | Prime Numbers | Tรฆlle |
|---|---|---|
| 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 |
Sรฅdan udskriver du Prime Numbers Mellem 1 og 100 Program i Java
Nedenfor er Java program til at udskrive primtal fra 1 til 100:
Program logik:
- Den primรฆre metode for primtalsprogram i Java indeholder en lรธkke til at kontrollere primtal mellem 1 og 100 et efter en.
- Hovedmetoden kalder metoden
CheckPrimeat afgรธre, om et tal er et primtal i Java eller ej. - Vi skal dividere et inputtal, f.eks. 17, fra vรฆrdierne 2 til 17 og kontrollere resten. Hvis resten er 0, er tallet ikke et primtal.
- Intet tal er deleligt med mere end halvdelen af โโsig selv. Sรฅ vi skal kun gennemgรฅ numberToCheck/2. Hvis inputtet er 17, er halvdelen 8.5, og lรธkken vil iterere gennem vรฆrdierne 2 til 8.
- If
numberToChecker fuldstรฆndig delelig med et andet tal, returnerer vi falsk, og lรธkken brydes. - If
numberToChecker prime, vender vi tilbage sandt. - I hovedmetoden for primtal 1 til 100 tommer Java, tjek om isPrime er
TRUEog lรฆg vรฆrdien til primtalletNumbersFundet streng. - Udskriv til sidst primtal fra 1 til 100 tommer Java.
At separere checken i sin egen metode er det, der gรธr programmet genbrugeligt. Den samme CheckPrime-metode kan kaldes med en hvilken som helst รธvre grรฆnse blot ved at รฆndre maxCheck-variablen.
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;
}
}
Forventet output:
Outputtet af primtallet mellem 1 og 100 i Java program vil vรฆre:
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
Vรฆrdien 2 bestรฅs, fordi den indre lรธkkebetingelse i <= 2 / 2 evaluerer til 2 <= 1, som er falsk med det samme, sรฅ metoden returnerer sand uden en eneste division.
Optimeret version ved hjรฆlp af kvadratrodsgrรฆnsen
Det er korrekt at dividere op til halvdelen af โโtallet, men det udfรธrer unรธdvendigt arbejde. Divisorer optrรฆder altid parvis omkring kvadratroden, sรฅ enhver faktor over โn har en partner under sig, som allerede er testet.
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; } }
Output:
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
๐ก Tip: StringBuilder erstatter gentagen strengsammenkรฆdning inde i lรธkken. Hver += on a String opretter et nyt objekt, som bliver mรฅlbart, nรฅr den รธvre grรฆnse nรฅr flere tusinde.
Print Prime Numbers Brug af Eratosthenes-sigten
Nรฅr alle primtal i et interval er nรธdvendige, er prรธvedivision det forkerte vรฆrktรธj. Eratosthenes' si opbygger et boolsk array, markerer multiplaene af hvert primtal som sammensat og aflรฆser det, der forbliver umarkeret.
Metoden fungerer i tre trin:
- Opret et boolsk array af stรธrrelse n+1 og antag, at hvert indeks fra 2 og opefter er primt.
- Startende ved 2, marker hvert multiplum af det aktuelle primtal som sammensat.
- Gรฅ videre til det nรฆste umarkerede indeks og gentag indtil kvadratroden af โโn er passeret.
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()); } }
Output:
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
Sammenligning af de tre tilgange
Alle tre programmer udskriver de samme 25 vรฆrdier, sรฅ valget afhรฆnger helt af stรธrrelsen pรฅ omrรฅdet.
| Tilgang | Tidskompleksitet | Ekstra hukommelse | Bedste-serien |
|---|---|---|---|
| Prรธvedeling til n/2 | O(nยฒ) | O (1) | Op til et par tusinde |
| Prรธvedivision til โn | O(nโn) | O (1) | Op til et par hundrede tusinde |
| Sigte af Eratosthener | O(n log log n) | O (n) | Millioner af vรฆrdier |
Tjek vores program for at finde primtal fra et hvilket som helst inputtal nรฅr en enkelt vรฆrdi i stedet for et interval skal testes. For yderligere loop-drevne รธvelser, gennemgรฅ Fibonacci-rรฆkken i Java, Java palindromprogram, og Bubble Sorter algoritme ind JavaDet boolske array, der bruges af sieven, forklares yderligere i Java arrays.
