Java Program untuk Mencetak Prime Numbers dari 1 ke 100

โšก Ringkasan Cerdas

Program untuk Mencetak Bilangan Prima Dari 1 hingga 100 in Java Memindai setiap nilai dalam suatu rentang dan melaporkan nilai-nilai yang memiliki tepat dua pembagi. Artikel ini menjelaskan definisi, metode pengecekan, program lengkap, Saringan Eratosthenes, dan perbandingan kinerja dengan keluaran yang telah diverifikasi.

  • ๐Ÿ”ข Aturan Definisi: Bilangan prima adalah bilangan yang lebih besar dari 1 dan hanya habis dibagi oleh 1 dan dirinya sendiri, yang berarti 0 dan 1 tidak termasuk di dalamnya.
  • ๐Ÿ” Pemindaian Jangkauan: Sebuah loop luar berjalan dari 2 ke batas atas dan mendelegasikan setiap nilai ke metode pengecekan yang dapat digunakan kembali.
  • โœ… Metode Boolean: Fungsi CheckPrime mengembalikan nilai false jika pembagi pertama ditemukan dan nilai true jika perulangan selesai tanpa menemukan kecocokan.
  • โˆš Batas Pembagi: Pengujian hingga setengah dari nilai tersebut sudah benar, dan berhenti.ping pada akar kuadrat menghasilkan jawaban yang sama jauh lebih cepat.
  • ๐Ÿงฎ Kumpulan Hasil: Terdapat tepat 25 bilangan prima antara 1 dan 100, yang berakhiran 97.
  • โšก Metode Penyaringan: Sieve of Eratosthenes menandai kelipatan dalam array boolean dan berjalan dalam waktu O(n log log n).
  • ๐Ÿงช Praktik Verifikasi: Konfirmasikan bahwa angka 2 disertakan dan angka 1 dikecualikan sebelum mempercayai implementasi apa pun.

Perdana Numbers 1 hingga 100 in Java

Apa itu Bilangan Prima?

A Bilangan prima Bilangan prima adalah bilangan yang hanya habis dibagi satu atau dirinya sendiri. Bilangan prima adalah bilangan asli yang lebih besar dari satu dan bukan hasil perkalian dua bilangan asli yang lebih kecil. Misalnya, 11 hanya habis dibagi satu atau dirinya sendiri. Bilangan prima lainnya adalah 2, 3, 5, 7, 11, 13, 17, dan seterusnya.

Catatan: 0 dan 1 bukan bilangan prima. 2 merupakan satu-satunya bilangan prima yang genap.

Antara 1 dan 100 terdapat tepat 25 bilangan prima. Tabel di bawah ini mengelompokkannya berdasarkan dekade, yang membuat pola penipisan terlihat seiring bertambahnya nilai.

Jarak Perdana Numbers Menghitung
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

Cara Mencetak Perdana Numbers Antara 1 hingga 100 Program masuk Java

Di bawah ini adalah Java program untuk mencetak bilangan prima dari 1 sampai 100:

Logika Program:

  • Metode utama dari program bilangan prima di Java Berisi sebuah perulangan untuk memeriksa bilangan prima antara 1 hingga 100 satu per satu.
  • Metode utama memanggil metode tersebut CheckPrime untuk menentukan apakah suatu angka adalah bilangan prima dalam Java atau tidak.
  • Kita perlu membagi sebuah angka masukan, misalnya 17, dengan angka-angka dari 2 hingga 17 dan memeriksa sisanya. Jika sisanya adalah 0, angka tersebut bukan bilangan prima.
  • Tidak ada angka yang habis dibagi lebih dari setengahnya. Jadi, kita hanya perlu melakukan perulangan melalui numberToCheck/2. Jika inputnya adalah 17, setengahnya adalah 8.5, dan perulangan akan berulang melalui nilai 2 hingga 8.
  • If numberToCheck Jika seluruhnya habis dibagi oleh angka lain, kita kembalikan false, dan perulangan dihentikan.
  • If numberToCheck adalah bilangan prima, kita mengembalikan nilai true.
  • Dalam metode utama untuk bilangan prima 1 sampai 100 di Java, periksa apakah isPrime adalah TRUE dan tambahkan nilai tersebut ke bilangan prima.NumbersString ditemukan.
  • Terakhir, cetak bilangan prima dari 1 hingga 100 di Java.

Memisahkan pengecekan ke dalam metode tersendiri adalah yang membuat program ini dapat digunakan kembali. Metode CheckPrime yang sama dapat dipanggil dengan batas atas apa pun hanya dengan mengubah variabel 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;

    }

}

Output yang Diharapkan:

Hasil keluaran bilangan prima antara 1 hingga 100 pada Java program akan:

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

Nilai 2 lolos karena kondisi loop dalam terpenuhi. i <= 2 / 2 mengevaluasi ke 2 <= 1, yang langsung salah, sehingga metode tersebut mengembalikan nilai true tanpa perlu pembagian sama sekali.

Versi yang Dioptimalkan Menggunakan Batas Akar Kuadrat

Membagi hingga setengah dari angka tersebut memang benar, tetapi melakukan pekerjaan yang tidak perlu. Pembagi selalu muncul berpasangan di sekitar akar kuadrat, jadi setiap faktor di atas โˆšn memiliki pasangannya di bawahnya yang sudah diuji.

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

Keluaran:

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

๐Ÿ’ก Kiat: StringBuilder menggantikan penggabungan String berulang di dalam loop. Setiap += Pada sebuah String, akan dibuat objek baru, yang menjadi terukur setelah batas atasnya mencapai beberapa ribu.

Print Prime Numbers Menggunakan Saringan Eratosthenes

Ketika setiap bilangan prima dalam suatu rentang dibutuhkan, pembagian percobaan bukanlah alat yang tepat. Saringan Eratosthenes membangun sebuah larik Boolean, menandai kelipatan setiap bilangan prima sebagai bilangan komposit, dan membaca apa pun yang tersisa tanpa tanda.

Metode ini bekerja dalam tiga langkah:

  1. Buat array boolean berukuran n+1 dan asumsikan setiap indeks dari 2 ke atas adalah bilangan prima.
  2. Dimulai dari 2, tandai setiap kelipatan dari bilangan prima saat ini sebagai bilangan komposit.
  3. Lanjutkan ke indeks tak bertanda berikutnya dan ulangi hingga akar kuadrat dari n terlampaui.
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());
    }
}

Keluaran:

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

Perbandingan Ketiga Pendekatan

Ketiga program tersebut mencetak 25 nilai yang sama, jadi pilihan sepenuhnya bergantung pada ukuran rentang.

Pendekatan Kompleksitas Waktu Memori Ekstra Rentang Terbaik
Pembagian percobaan ke n/2 HAI(nยฒ) O (1) Hingga beberapa ribu
Pembagian percobaan hingga โˆšn O(nโˆšn) O (1) Hingga beberapa ratus ribu
Saringan Eratosthenes O(n log log n) O (n) Jutaan nilai

Periksa program kami untuk mengetahui bilangan prima dari bilangan masukan apa pun ketika nilai tunggal, bukan rentang, yang harus diuji. Untuk latihan berbasis perulangan lebih lanjut, tinjau kembali Deret Fibonacci dalam Java, yang Java program palindrom, Dan Bubble Sortir algoritma dalam JavaArray boolean yang digunakan oleh sieve dijelaskan lebih lanjut di Java array.

Pertanyaan Umum Demo Slot

Terdapat tepat 25 angka. Urutan dimulai dari 2 dan berakhir pada 97, dan kepadatannya menurun secara bertahap seiring bertambahnya nilai.

Kondisi loop dalam menjadi 2 <= 1, yang langsung bernilai salah, sehingga tidak ada pembagian yang terjadi dan metode tersebut mengembalikan nilai benar. Kasus tunggal ini layak diuji di setiap implementasi.

Ubah variabel maxCheck menjadi 500. Untuk memulai di atas 1, sesuaikan nilai awal penghitung loop luar, dan biarkan metode pengecekan tidak berubah.

Setiap kelipatan yang lebih kecil dari p sudah mengandung faktor prima yang lebih kecil dan telah ditandai pada proses sebelumnya. Memulai dari p kuadrat menghindari pengulangan pekerjaan tersebut.

Mereka biasanya mengembalikan pembagian percobaan kecuali jika perintah menyebutkan rentang atau kinerja yang besar. Menyebutkan batas atas dalam permintaan biasanya menghasilkan saringan sebagai gantinya.

Bilangan prima dipilih sebagai ukuran tabel hash dan bucket fitur karena mendistribusikan kunci secara merata dan mengurangi benturan. Bilangan prima juga menjadi dasar fungsi hashing yang digunakan dalam vektorisasi fitur.

Ringkaslah postingan ini dengan: