Saatnya menempa otak kembali, untuk menentukan bilangan prima ada beberapa algoritma yang dapat digunakan..
1. Bagi bilangan yang akan di cek mulai dari 2 sampai Bilangan-1
2. Bagi bilangan yang akan di cek mulai dari 2 sampai (bilangan/2)
3. Bagi bilangan yang akan di cek mulai dari 2 sampai (bilangan/2 tetapi hanya yang ganjil saja)
4. Bagi bilangan yang akan di cek mulai dari 2 sampai akar dari bilangan
Dari ke empat algoritma diatas saya akan menggunakan yang nomor 4 karena lebih efisien dalam waktu dibandingkan dengan yang lainnya. Bila algoritma yang digunakan adalah yang nomor 1, maka program akan berjalan dengan waktu yang cukup lama, karena akan menghitung mulai dari 2 sampai bilangan-1, bayangkan jika bilangannya adalah 1.235.546 maka akan ada berapa perhitungan,,,? sangat banyak...
#include <iostream.h>
#include <math.h>
#include <conio.h>
main(){
int dt, i, n, st, pembagi, batascek;
float jml, cacah, rata;
jml=0;
cacah=0;
cout<<"berapa banyak data ? ";cin>>n;
for(i=1; i<=n; i++){
cout<<"masukkan data ke "<<i<<": "; cin>>dt;
if(dt==2) st=0;
else
{
if((dt<=1)||(dt%2==0))st=1;
else
{
st=0;
pembagi=3;
batascek=ceil(sqrt(dt));
while((pembagi<=batascek)&&(st==0))
{
if (dt%pembagi==0) st=1;
else
pembagi+=2;
}
}
}
if(st==0)
{
jml=jml+dt;
cacah++;
}
}
rata=jml/cacah;
cout<<"Banyaknya data berstatus prima dalah "<<cacah<<endl;
cout<<"Jumlah data yang berstatus prima adalah "<<jml<<endl;
cout<<"Rata-rata data yang berstatus prima dalah "<<rata<<endl;
getch();
}
Sekian, screenshot nya diatas.
HellKnight
0 comments:
Posting Komentar