Java Program za ispis Prime Numbers od 1 da 100

โšก Pametni saลพetak

Program za ispis prostih brojeva od 1 do 100 in Java skenira svaku vrijednost u rasponu i izvjeลกtava o onima s toฤno dva djelitelja. Ovaj ฤlanak objaลกnjava definiciju, metodu provjere, cijeli program, Eratostenovo sito i usporedbu performansi s provjerenim izlazom.

  • ๐Ÿ”ข Pravilo definicije: Prost broj je veฤ‡i od 1 i djeljiv je samo s 1 i samim sobom, ลกto u potpunosti iskljuฤuje 0 i 1.
  • ๐Ÿ” Skeniranje raspona: Vanjska petlja ide od 2 do gornje granice i delegira svaku vrijednost metodi provjere koja se moลพe ponovno koristiti.
  • โœ… Booleova metoda: CheckPrime vraฤ‡a false za prvi pronaฤ‘eni djelitelj i true kada se petlja zavrลกi bez podudaranja.
  • โˆš Granica djelitelja: Testiranje do polovice vrijednosti je toฤno i zaustavite seping kod kvadratnog korijena daje isti odgovor puno brลพe.
  • ๐Ÿงฎ Skup rezultata: Izmeฤ‘u 1 i 100 postoji toฤno 25 prostih brojeva, a zavrลกava s 97.
  • โšก Metoda sita: Eratostenovo sito oznaฤava viลกekratnike u logiฤkom nizu i izvrลกava se u vremenu O(n log log n).
  • ๐Ÿงช Praksa verifikacije: Prije nego ลกto povjerujete bilo kojoj implementaciji, provjerite je li 2 ukljuฤeno, a 1 iskljuฤeno.

Glavni Numbers 1 do 100 inฤa Java

ล to je prosti broj?

A Glavni broj je broj koji je djeljiv samo s jedan ili samim sobom. To je prirodni broj veฤ‡i od jedan koji nije umnoลพak dva manja prirodna broja. Na primjer, 11 je djeljiv samo s jedan ili samim sobom. Ostali prosti brojevi su 2, 3, 5, 7, 11, 13, 17 i tako dalje.

Biljeลกka: 0 i 1 nisu prosti brojevi. 2 je jedini paran prost broj.

Izmeฤ‘u 1 i 100 nalazi se toฤno 25 prostih brojeva. Donja mreลพa ih grupira po dekadama, ลกto ฤini uzorak prorjeฤ‘ivanja vidljivim kako vrijednosti rastu.

Raspon Glavni Numbers Raฤunati
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

Kako ispisati Prime Numbers Izmeฤ‘u 1 do 100 programa u Java

Ispod je Java program za ispis prostih brojeva od 1 do 100:

Programska logika:

  • Glavna metoda program prostih brojeva u Java sadrลพi petlju za provjeru prostih brojeva izmeฤ‘u 1 i 100 jedan po jedan.
  • Glavna metoda poziva metodu CheckPrime utvrditi je li broj prost broj u Java ili ne.
  • Moramo podijeliti ulazni broj, recimo 17, s vrijednostima od 2 do 17 i provjeriti ostatak. Ako je ostatak 0, broj nije prost.
  • Nijedan broj nije djeljiv s viลกe od polovice samog sebe. Dakle, trebamo petlju proฤ‡i kroz samo numberToCheck/2. Ako je ulaz 17, polovica je 8.5, a petlja ฤ‡e iterirati kroz vrijednosti od 2 do 8.
  • If numberToCheck u cijelosti djeljiv s drugim brojem, vraฤ‡amo false i petlja je prekinuta.
  • If numberToCheck je primarni, vraฤ‡amo true.
  • U glavnoj metodi za proste brojeve od 1 do 100 in Java, provjerite je li isPrime TRUE i dodajte vrijednost prostom brojuNumbersPronaฤ‘eni niz.
  • Na kraju ispiลกite proste brojeve od 1 do 100 in Java.

Odvajanje provjere u zasebnu metodu ฤini program ponovno upotrebljivim. Ista metoda CheckPrime moลพe se pozvati s bilo kojom gornjom granicom jednostavnom promjenom varijable 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ฤekivani rezultat:

Izlaz prostog broja izmeฤ‘u 1 i 100 u Java program bit ฤ‡e:

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

Vrijednost 2 prolazi jer je uvjet unutarnje petlje i <= 2 / 2 procjenjuje se na 2 <= 1, ลกto je odmah laลพno, pa metoda vraฤ‡a istinu bez ijednog dijeljenja.

Optimizirana verzija koriลกtenjem kvadratnog korijena

Dijeljenje do polovice broja je ispravno, ali obavlja nepotreban rad. Djelitelji se uvijek pojavljuju u parovima oko drugog korijena, tako da svaki faktor iznad โˆšn ima partnera ispod sebe koji je veฤ‡ testiran.

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

Izlaz:

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

๐Ÿ’ก Savjet: StringBuilder zamjenjuje ponovljeno spajanje stringova unutar petlje. Svaki += na nizu znakova stvara novi objekt koji postaje mjerljiv kada gornja granica dosegne nekoliko tisuฤ‡a.

Print Prime Numbers Koriลกtenje Eratostenovog sita

Kada je potreban svaki prosti broj u rasponu, probno dijeljenje nije pravi alat. Eratostenovo sito gradi logiฤki niz, oznaฤava viลกekratnike svakog prostog broja kao sloลพene i oฤitava sve ลกto ostane neoznaฤeno.

Metoda funkcionira u tri koraka:

  1. Napravite logiฤki niz veliฤine n+1 i pretpostavite da je svaki indeks od 2 naviลกe prost.
  2. Poฤevลกi od 2, oznaฤi svaki viลกekratnik trenutnog prostog broja kao sloลพeni.
  3. Prijeฤ‘ite na sljedeฤ‡i neoznaฤeni indeks i ponavljajte dok se ne dobije kvadratni korijen od 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());
    }
}

Izlaz:

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

Usporedba triju pristupa

Sva tri programa ispisuju istih 25 vrijednosti, tako da izbor u potpunosti ovisi o veliฤini raspona.

Pristup Sloลพenost vremena Dodatna memorija Najbolji raspon
Probno dijeljenje na n/2 O(nยฒ) O (1) Do nekoliko tisuฤ‡a
Probno dijeljenje na โˆšn O(nโˆšn) O (1) Do nekoliko stotina tisuฤ‡a
Sita Eratostena O(n log log n) O (n) Milijuni vrijednosti

Provjerite naลก program kako biste saznali prosti brojevi iz bilo kojeg ulaznog broja kada se mora testirati jedna vrijednost, a ne raspon. Za daljnje vjeลพbe s petljom, pregledajte Fibonaccijev niz u Java je Java palindromski program, A Bubble Algoritam sortiranja u JavaBooleov niz koji koristi sito detaljnije je objaลกnjen u Java nizovi.

Pitanja i odgovori

Ima ih toฤno 25. Niz poฤinje na 2 i zavrลกava na 97, a gustoฤ‡a se stalno smanjuje kako vrijednosti rastu.

Unutarnji uvjet petlje postaje 2 <= 1, ลกto je odmah laลพno, pa se ne izvrลกava dijeljenje i metoda vraฤ‡a istinu. Taj pojedinaฤni sluฤaj vrijedi testirati u svakoj implementaciji.

Promijenite varijablu maxCheck na 500. Za poฤetak iznad 1, prilagodite poฤetnu vrijednost brojaฤa vanjske petlje i ostavite metodu provjere netaknutom.

Svaki manji viลกekratnik p veฤ‡ sadrลพi manji prosti djelitelj i bio je oznaฤen tijekom ranijeg prolaza. Poฤetak od p na kvadrat izbjegava ponavljanje tog rada.

Obiฤno vraฤ‡aju probno dijeljenje osim ako upit ne spominje veliki raspon ili performanse. Navoฤ‘enje gornje granice u zahtjevu obiฤno umjesto toga rezultira sitom.

Prosti brojevi se odabiru kao veliฤine hash tablice i bucketa znaฤajki jer ravnomjerno rasporeฤ‘uju kljuฤeve i smanjuju kolizije. Oni takoฤ‘er daju poฤetno znaฤenje hash funkcijama koje se koriste u vektorizaciji znaฤajki.

Saลพmite ovu objavu uz: