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.

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
CheckPrimeuntuk 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
numberToCheckJika seluruhnya habis dibagi oleh angka lain, kita kembalikan false, dan perulangan dihentikan. - If
numberToCheckadalah bilangan prima, kita mengembalikan nilai true. - Dalam metode utama untuk bilangan prima 1 sampai 100 di Java, periksa apakah isPrime adalah
TRUEdan 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:
- Buat array boolean berukuran n+1 dan asumsikan setiap indeks dari 2 ke atas adalah bilangan prima.
- Dimulai dari 2, tandai setiap kelipatan dari bilangan prima saat ini sebagai bilangan komposit.
- 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.
