Java Program pentru imprimare Prime Numbers de la 1 la 100
โก Rezumat inteligent
Program pentru a imprima numฤrul prim de la 1 la 100 in Java scaneazฤ fiecare valoare dintr-un interval ศi raporteazฤ valorile cu exact doi divizori. Acest articol explicฤ definiศia, metoda de verificare, programul complet, sita lui Eratostene ศi o comparaศie a performanศei cu rezultatul verificat.

Ce este un numฤr prim?
A Numฤr prim este un numฤr care este divizibil doar cu unu sau cu el รฎnsuศi. Este un numฤr natural mai mare decรขt unu care nu este produsul a douฤ numere naturale mai mici. De exemplu, 11 este divizibil doar cu unu sau cu el รฎnsuศi. Alte numere prime sunt 2, 3, 5, 7, 11, 13, 17 ศi aศa mai departe.
Notฤ: 0 ศi 1 nu sunt numere prime. 2 este singurul numฤr prim par.
รntre 1 ศi 100 existฤ exact 25 de numere prime. Grila de mai jos le grupeazฤ pe decade, ceea ce face vizibil modelul de subศiere pe mฤsurฤ ce valorile cresc.
| Gamฤ | Prim Numbers | Conta |
|---|---|---|
| 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 |
Cum se imprimฤ Prime Numbers รntre 1 ศi 100 Program รฎn Java
Mai jos este Java program pentru a imprima numere prime de la 1 la 100:
Logica programului:
- Metoda principalฤ a program numere prime รฎn Java conศine o buclฤ pentru verificarea numerelor prime รฎntre 1 ศi 100, unul cรขte unul.
- Metoda principalฤ numeศte metoda
CheckPrimepentru a determina dacฤ un numฤr este un numฤr prim รฎn Java sau nu. - Trebuie sฤ รฎmpฤrศim un numฤr introdus, sฤ zicem 17, la valorile de la 2 la 17 ศi sฤ verificฤm restul. Dacฤ restul este 0, numฤrul nu este prim.
- Niciun numฤr nu este divizibil cu mai mult de jumฤtate din el รฎnsuศi. Aศadar, trebuie sฤ parcurgem doar numberToCheck/2. Dacฤ intrarea este 17, jumฤtatea este 8.5, iar bucla va itera prin valorile de la 2 la 8.
- If
numberToCheckeste รฎn รฎntregime divizibil cu un alt numฤr, returnฤm fals, iar bucla este รฎntreruptฤ. - If
numberToCheckeste prim, revenim adevฤrat. - รn metoda principalฤ pentru numerele prime de la 1 la 100 in Java, verificaศi dacฤ isPrime este
TRUEศi adฤugaศi valoarea la numฤrul primNumbersAm gฤsit ศir de caractere. - รn cele din urmฤ, imprimaศi numere prime de la 1 la 100 in Java.
Separarea verificฤrii รฎntr-o metodฤ proprie este ceea ce face ca programul sฤ fie reutilizabil. Aceeaศi metodฤ CheckPrime poate fi apelatฤ cu orice limitฤ superioarฤ pur ศi simplu prin modificarea variabilei 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;
}
}
Ieศire preconizatฤ:
Rezultatul numฤrului prim รฎntre 1 ศi 100 รฎn Java program va fi:
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
Valoarea 2 trece deoarece condiศia buclei interne i <= 2 / 2 evalueazฤ la 2 <= 1, care este fals imediat, deci metoda returneazฤ adevฤrat fฤrฤ o singurฤ diviziune.
Versiune optimizatฤ folosind limita rฤdฤcinii pฤtrate
รmpฤrศirea la jumฤtate din numฤr este corectฤ, dar implicฤ o operaศiune inutilฤ. Divizorii apar รฎntotdeauna รฎn perechi รฎn jurul rฤdฤcinii pฤtrate, deci orice factor mai mare decรขt โn are un partener sub el, care a fost deja testat.
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; } }
ieศire:
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
๐ก Sfat: StringBuilder รฎnlocuieศte concatenarea repetatฤ de ศiruri de caractere รฎn interiorul buclei. Fiecare += pe un ศir de caractere creeazฤ un obiect nou, care devine mฤsurabil odatฤ ce limita superioarฤ atinge cรขteva mii.
Print Prime Numbers Folosind sita lui Eratostene
Cรขnd este nevoie de fiecare numฤr prim dintr-un interval, รฎmpฤrศirea prin รฎncercฤri este instrumentul greศit. Sita lui Eratostene construieศte o matrice booleanฤ, marcheazฤ multiplii fiecฤrui numฤr prim ca fiind compuศi ศi citeศte tot ce rฤmรขne nemarcat.
Metoda funcศioneazฤ รฎn trei etape:
- Creaศi un tablou boolean de dimensiunea n+1 ศi presupuneศi cฤ fiecare indice de la 2 รฎn sus este prim.
- รncepรขnd de la 2, marcaศi fiecare multiplu al numฤrului prim curent ca fiind compus.
- Se avanseazฤ la urmฤtorul index nemarcat ศi se repetฤ pรขnฤ cรขnd se trece rฤdฤcina pฤtratฤ a lui 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()); } }
ieศire:
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
Compararea celor trei abordฤri
Toate cele trei programe afiศeazฤ aceleaศi 25 de valori, deci alegerea depinde รฎn รฎntregime de dimensiunea intervalului.
| Abordarea | Complexitatea timpului | Memorie suplimentarฤ | Cea mai bunฤ gamฤ |
|---|---|---|---|
| รmpฤrศirea รฎncercฤrii la n/2 | O(nยฒ) | O (1) | Pรขnฤ la cรขteva mii |
| รmpฤrศirea de รฎncercare la โn | O(nโn) | O (1) | Pรขnฤ la cรขteva sute de mii |
| Sita lui Eratosthenes | O(n log log n) | O (n) | Milioane de valori |
Verificaศi programul nostru pentru a afla numere prime din orice numฤr de intrare cรขnd trebuie testatฤ o singurฤ valoare, mai degrabฤ decรขt un interval. Pentru exerciศii suplimentare bazate pe bucle, consultaศi Seria Fibonacci รฎn Java, Java program palindrom, ลi Bubble Sortaศi algoritmul JavaTabloul boolean utilizat de sivetฤ este explicat mai detaliat รฎn Java matrice.
