Algoritma dan flowchart untuk menentukan bilangan prima atau bukan
Algoritma :
- Deklarasikan variable i untuk iterasi, variable bil untuk bilangan yang ingin ditentukan apakah bilangan prima atau bukan, dan variabel x.
- Masukkan bilangan yang ingin ditentukan apakah bilangan prima atau bukan dan nyatakan ke variabel bil.
- Apabila bilangan yang dimasukkan tadi kurang dari atau sama dengan 0 maka cetak ” Bukan Bilangan Prima”, namun bila bilangan tersebut lebih dari 0 maka lakukan langkah 4 s/d 8. Kemudian lanjutkan ke langkah 9.
- Isi variabel i dengan nilai 2.
- Selama nilai pada variabel i masih kurang dari nilai pada variabel bil, lakukan langkah 6 s/d 8.
- Hitung sisa hasil bagi nilai pada variabel bil dengan i dan nyatakan ke variabel x.
- Bila hasil bagi tersebut sama dengan 0, cetak ” Bukan Bilangan Prima” dan langsung ke langkah 10.
- Tambahkan nilai pada variabel i dengan 1.
- Cetak ” Bilangan Prima ”.
- Tanya apakah user masih ingin menentukan suatu bilangan apakah merupakan bilangan prima.
- Bila jawabannya iya, maka kembali ke langkah ke-2.
- Bila jawabannya tidak, maka program dapat langsung diakhiri.
- Namun jika bukan keduanya, tanyalah kembali (kembali ke langkah 9).
Flowchart :
Program C++ untuk Menampilkan Bilangan Prima
#include<iostream>using namespace std;
main()
{
int x,i,count=0;
cout<<"\nMasukkan sebuah angka : ";
cin>>x;
for(i=2;i<=x/2;i++)
{
if(x%i==0)
count++;
}
if(count>0 || x<2)
cout<<x<<"bukan bilangan prima\n";
else
cout<<x<<"\n bilangan prima\n";
}
Penjelasan:
main() ==>Ini adalah fungsi main dimana akan dipanggil pertamakali jika program dieksekusi.
{
int x,i,count=0; ==>kita bikin 3 variable dengan tipe integer. variable count diisi dengan nol
cout<<"\nMasukkan sebuah angka : ==> menampilkan dilayar
cin>>x; ==> meminta input
for(i=2;i<=x/2;i++) ==> ini loop mulai dari 2 sampai n/2 kenapa? nanti saya jelaskan
{
if(x%i==0) ==> ini kondisi yang artinya, jika sisa pembagian x dengan i sama dengan 0
count++; ==> count yang kita isi dengan nol pertama kali tadi ditambah terus kalau kondisi "if" benar
}
/*
loop for ini akan mengecek apakah bilangan tersebut dapat dibagi 2 (apakah sisa pembagian x dengan 2 = 0). Jika ya, maka kita tambah counter "count". count++ sama artinya dengan count=count+1. Jadi, jika count bertambah maka bilangan ini bukan bilangan prima.
Kenapa mulai dari 2. Karena 2 adalah bilangan prima yang paling kecil. Inilah kenapa kita pakai batas atasnya adalah n/2 karena kita sudah mengecek 2 pertama kali. Jika bilangan yang kita periksa merupakan kelipatan 2, maka pada pemeriksaan ke n/2 kita akan mendapatkan sisa pembagian 0. Artinya bilangan tersebut bukan prima dan kita tidak perlu melakukan pengecekan selanjutnya (hemat 1/2 langkah ^_^ )
Apakah 2 masuk jadi bilangan prima (seharusnya masuk)?
Ya, kita tidak mengecek 2 karena loop dimulai dari 2 sampai 2/2. Loop gak jalan,
Yang artinya count tidak bertambah(tetap 0), dan 2 masuk sebagai bilangan prima.
*/
if(count>0 || x<2) ==> artinya jika count nilanya lebih dari 0 atau x lebih kecil dari 2 (0 atau 1)
cout<<x<<"bukan bilangan prima\n";
else
cout<<x<<"\n bilangan prima\n";
}