Tampilkan postingan dengan label Bilangan Prima. Tampilkan semua postingan
Tampilkan postingan dengan label Bilangan Prima. Tampilkan semua postingan

Kamis, 17 November 2016

Java Programming : Program Pencetak Bilangan Prima

Assalamu'alaikum.
Pagi semuanya.. Sesuai janji kemarin, postingan kali ini akan membahas tentang problem case Prime Generator atau Program pencetak bilangan prima.

Disini, konsep yang digunakan akan dibuat semudah mungkin supaya yang masih awal di pemrograman pun juga bisa paham.
Oh iya, kalo sebelumnya belum melihat postingan saya tentang problem case pengecekan bilangan prima, saya sarankan buka postingan itu dulu, lalu baru baca postingan ini.
Karena saya tidak akan menjelaskan kegunaan dari method prime() dibawah. (KARENA METHOD prime() INI SEBENARNYA SAMA DENGAN PENGECEKAN BILANGAN PRIMA)

Langsung saja source code-nya bisa dilihat dibawah.

import java.util.Scanner;

public class PrimeGenerator
{
   static int printout;
  
   static void prime(int numb){
       int j, error;
      
       error = 0;
       for(j = 2; j <= Math.sqrt(numb); j++){
           if(numb % j == 0){
               error = 1;
               break;
           }
       }
      
       if(error == 0 && numb > 1){
           System.out.println("Prime Number : " + numb);
           printout = 1;
       }
   }
  
   public static void main(String[] args){
       int lower, upper;
       Scanner input = new Scanner(System.in);
      
       printout = 0;
       System.out.println("Program Prime Number Generator");
       System.out.println("------------------------------");
       System.out.println("Masukkan batas bawah dari Integer : ");
       lower=input.nextInt();
       System.out.println("Masukkan batas atas dari Integer : ");
       upper=input.nextInt();
      
       if(lower > upper){
           System.out.println("");
           System.out.println("Batas atas harus lebih besar dari batas bawah");
       }
      
       System.out.println("");
       for( ; lower<=upper; lower++){
           prime(lower);
       }
      
       if(printout==0){
           System.out.println("Tidak ada bilangan prima pada rentang bilangan tersebut");
       }
   }
}


Di dalam class PrimeGenerator ada 2 method, yaitu method Prime() yang digunakan untuk mengecek integer yang masuk,
dan ada method main() yang merupakan method utama yang akan dijalankan dalam console Java.

Biasanya problem case yang disediakan pada bahasa program manapun untuk pencetak bilangan prima adalah cetaklah n bilangan prima pertama.
Jadi pasti dimulai dari 2, 3, 5, dst..

Tapi source code diatas, saya buat sedemikian rupa sehingga pengecekan dilakukan mulai dari nilai integer a sampai integer b.
Istilahnya adalah membuat interval, dan melakukan pengecekan didalam interval tersebut.

Untuk contoh pengeksekusian programnya bisa dilihat di bawah.


Sekian pembahasan masalah program pencetak bilangan prima.
Dan seperti biasanya jika ada pertanyaan atau saran untuk postingan ini, silahkan tulis di komentar. Terima kasih.
Wassalamu'alaikum.

Java Programming : Mengecek Bilangan Prima

Assalamu'alaikum.
Pagi.. Kali ini postingannya membahas masalah yang tingkatnya sedikit diatas dasar.
Problem case yang akan dibawa kali ini adalah bagaimana caranya mengecek apakah suatu bilangan itu prima atau bukan.

Kalo dipikir secara logika sih, artinya kan bilangan prima itu bilangan yang bisa habis dibagi hanya oleh dirinya sendiri atau angka 1.
Yang artinya jika coba dibagi dengan bilangan lain selain itu, pasti akan menghasilkan sisa pembagian bukan 0, atau tidak habis dibagi.

Logika yang dipakai disini hampir mirip dengan konsep diatas, hanya saja lebih di persingkat sedikit.
Pertama-tama lihat source code dibawah ini dulu.

import java.util.Scanner;

public class CheckPrime
{
   public static void main(String[] args){
       Scanner input = new Scanner(System.in);
       int prime, i;
       double root;
       boolean error = false;
      
       System.out.println("Program Untuk Mengecek Bilangan Prima atau Bukan");
       System.out.println("------------------------------------------------");
       System.out.println("Masukkan Bilangan >> ");
      
       prime = input.nextInt();
       root = Math.sqrt(prime);
      
       for(i = 2; i <= root; i++){
           if(prime % i == 0){
               //System.out.println("Cek disini");  //Instruksi ini hanya menunjukkan apabila pada percabangan ini hanya dilakukan sekali saja penjalanan
               error = true;
               break;
           }
       }
      
       System.out.println("");
       if(error){
           System.out.println("Bilangan " + prime + " bukan Bilangan Prima");
       }
       else{
           System.out.println("Bilangan " + prime + " adalah Bilangan Prima");
       }
   }
}


Dari source code diatas, ada yang merasa ganjal ga?
Biasanya orang akan berpikir untuk membagi suatu bilangan sampai setengah kali bilangan tersebut.
Misal : Jika bilangan yang dimasukkan adalah 50. Maka batas dibaginya cukup sampai 25 saja, karena 50 / 26 atau 50 / 27, dst tidak akan habis dibagi, kecuali oleh 50 sendiri.
Cara itu sebenarnya sudah efektif. Tapi ada cara yang lebih efektif lagi.

Misal : Jika bilangan yang dimasukkan adalah 50.
Maka pengecekan cukup sampai square root / akar dari 50, dalam hal ini akar dari 50 bernilai 7,1..
Karena ketika 50 / 2 = 25 (habis dibagi)
50 / 5 = 10 (habis dibagi)
Nah, sejatinya 50 tidak perlu di cek dengan angka 10 ataupun 25 lagi, karena jika 50 / 10 akan menghasilkan 5, dan jika dibagi 25 akan menghasilkan 2.
Hal tersebut hanyalah membolak-balik pembagian saja. Sehingga batasan yang lebih pendek adalah sampai nilai akar dari bilangan tersebut.

Untuk contoh pengeksekusian programnya bisa dilihat di bawah.


Postingan selanjutnya mungkin membahas yang sedikit lebih susah dibandingkan problem ini.
Jadi untuk postingan yang ini cukup sekian dulu.
Dan seperti biasanya, jika ada pertanyaan atau saran untuk post ini, silahkan tulis di komentar. Terima kasih.
Wassalamu'alaikum.