Java Program pro tisk Prime Numbers od 1 do 100
โก Chytrรฉ shrnutรญ
Program pro tisk prvoฤรญsla od 1 do 100 palcลฏ Java prohledรกvรก kaลพdou hodnotu v rozsahu a hlรกsรญ ty s pลesnฤ dvฤma dฤliteli. Tento ฤlรกnek vysvฤtluje definici, kontrolnรญ metodu, kompletnรญ program, Eratosthenovo sรญto a porovnรกnรญ vรฝkonu s ovฤลenรฝm vรฝstupem.

Co je prvoฤรญslo?
A Prvoฤรญslo je ฤรญslo, kterรฉ je dฤlitelnรฉ pouze jednou nebo samo sebou. Je to pลirozenรฉ ฤรญslo vฤtลกรญ neลพ jedna, kterรฉ nenรญ souฤinem dvou menลกรญch pลirozenรฝch ฤรญsel. Napลรญklad 11 je dฤlitelnรฉ pouze jednou nebo samo sebou. Dalลกรญ prvoฤรญsla jsou 2, 3, 5, 7, 11, 13, 17 atd.
Poznรกmka: 0 a 1 nejsou prvoฤรญsla. 2 je jedinรฉ sudรฉ prvoฤรญslo.
Mezi 1 a 100 se nachรกzรญ pลesnฤ 25 prvoฤรญsel. Mลรญลพka nรญลพe je seskupuje podle dekรกdy, coลพ zviditelลuje vzorec ztenฤovรกnรญ s rostoucรญmi hodnotami.
| Rozsah | pojistnรฉ Numbers | Poฤรญtat |
|---|---|---|
| 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 |
Jak tisknout Prime Numbers Mezi 1 aลพ 100 programovรฝmi palci Java
Nรญลพe je Java program pro tisk prvoฤรญsel od 1 do 100:
Programovรก logika:
- Hlavnรญ metoda program prvoฤรญsel v Java obsahuje smyฤku pro kontrolu prvoฤรญsel od 1 do 100 jedno po druhรฉm.
- Hlavnรญ metoda volรก metodu
CheckPrimezjistit, zda je ฤรญslo prvoฤรญslem v Java nebo ne. - Potลebujeme vydฤlit vstupnรญ ฤรญslo, ลeknฤme 17, hodnotami od 2 do 17 a zkontrolovat zbytek. Pokud je zbytek 0, ฤรญslo nenรญ prvoฤรญslo.
- ลฝรกdnรฉ ฤรญslo nenรญ dฤlitelnรฉ vรญce neลพ polovinou sebe sama. Takลพe musรญme projรญt pouze numberToCheck/2. Pokud je vstup 17, polovina je 8.5 a smyฤka bude iterovat pลes hodnoty 2 aลพ 8.
- If
numberToCheckje zcela dฤlitelnรฉ jinรฝm ฤรญslem, vrรกtรญme false a smyฤka je pลeruลกena. - If
numberToCheckje prvoฤรญslo, vracรญme true. - V hlavnรญ metodฤ pro prvoฤรญsla 1 aลพ 100 palcลฏ Java, zkontrolujte, zda je isPrime
TRUEa pลiฤtฤte hodnotu k prvoฤรญsluNumbersNalezen ลetฤzec. - Nakonec vytisknฤte prvoฤรญsla od 1 do 100 palcลฏ Java.
Oddฤlenรญ kontroly do vlastnรญ metody umoลพลuje opakovanรฉ pouลพitรญ programu. Stejnou metodu CheckPrime lze volat s libovolnou hornรญ hranicรญ pouhou zmฤnou promฤnnรฉ maxCheck.
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;
}
}
Oฤekรกvanรฝ vรฝstup:
Vรฝstup prvoฤรญsla mezi 1 a 100 v Java program bude:
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
Hodnota 2 projde, protoลพe podmรญnka vnitลnรญ smyฤky i <= 2 / 2 vyhodnocuje se jako 2 <= 1, coลพ je okamลพitฤ nepravdivรฉ, takลพe metoda vracรญ hodnotu true bez jedinรฉho dฤlenรญ.
Optimalizovanรก verze s vyuลพitรญm odmocninovรฉ hranice
Dฤlenรญ aลพ do poloviny ฤรญsla je sprรกvnรฉ, ale provรกdรญ zbyteฤnou prรกci. Dฤlitelรฉ se vลพdy vyskytujรญ v pรกrech kolem druhรฉ odmocniny, takลพe jakรฝkoli dฤlitel nad โn mรก partnera pod nรญm, kterรฝ jiลพ byl otestovรกn.
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; } }
Vรฝstup:
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 nahrazuje opakovanรฉ zลetฤzenรญ ลetฤzcลฏ uvnitล smyฤky. Kaลพdรฝ += na ลetฤzci vytvoลรญ novรฝ objekt, kterรฝ se stane mฤลitelnรฝm, jakmile hornรญ limit dosรกhne nฤkolika tisรญc.
Print Prime Numbers Pouลพitรญ Eratosthenova sรญta
Pokud je potลeba kaลพdรฉ prvoฤรญslo v danรฉm rozsahu, zkuลกebnรญ dฤlenรญ je ลกpatnรฝ nรกstroj. Eratosthenovo sรญto vytvoลรญ booleovskรฉ pole, oznaฤรญ nรกsobky kaลพdรฉho prvoฤรญsla jako sloลพenรฉ a pลeฤte vลกe, co zลฏstane neoznaฤenรฉ.
Metoda funguje ve tลech krocรญch:
- Vytvoลte booleovskรฉ pole o velikosti n+1 a pลedpoklรกdejte, ลพe kaลพdรฝ index od 2 vรฝลกe je prvoฤรญslo.
- Poฤรญnaje ฤรญslem 2 oznaฤte kaลพdรฝ nรกsobek aktuรกlnรญho prvoฤรญsla jako sloลพenรฝ.
- Pลejdฤte na dalลกรญ neoznaฤenรฝ index a opakujte, dokud nedosรกhnete druhรฉ odmocniny z n.
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()); } }
Vรฝstup:
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
Porovnรกnรญ tลรญ pลรญstupลฏ
Vลกechny tลi programy vytisknou stejnรฝch 25 hodnot, takลพe volba zรกvisรญ vรฝhradnฤ na velikosti rozsahu.
| Pลรญstup | ฤasovรก sloลพitost | Extra pamฤลฅ | Nejlepลกรญ dosah |
|---|---|---|---|
| Zkuลกebnรญ dฤlenรญ na n/2 | O(nยฒ) | O (1) | Aลพ nฤkolik tisรญc |
| Zkuลกebnรญ dฤlenรญ na โn | O(nโn) | O (1) | Aลพ nฤkolik set tisรญc |
| Sรญto Eratosthenes | O(n log log n) | O (n) | Miliony hodnot |
Podรญvejte se na nรกลก program a zjistฤte prvoฤรญsla z libovolnรฉho vstupnรญho ฤรญsla kdyลพ je nutnรฉ testovat jednu hodnotu, nikoli rozsah. Dalลกรญ cviฤenรญ ลรญzenรก smyฤkou naleznete v Fibonacciho ลada v Javase Java palindromovรฝ programA Bubble Algoritmus ลazenรญ v JavaBooleovskรฉ pole pouลพรญvanรฉ sรญtem je dรกle vysvฤtleno v Java pole.
