Dasar Pemikiran
Bilangan prima adalah bilangan yang lebih besar dari angka satu dan hanya bisa dibagi dengan angka satu dan dirinya sendiri untuk mendapatkan hasil bagi yang tidak berupa angka pecahan. Berarti ada dua hal yang harus diperiksa dalam eksekusinya:
- Apakah lebih besar dari angka 1
- Apakah punya pembagi lain diluar dirinya dan angka 1, yang menghasilkan bilangan bukan pecahan
Masukkan jangkuan bilangan yang akan dicetak
Periksa apakah bilangan tersebut valid dengan melihat batas bawah dan atas (harus lebih besar dari 1)
Cetak hasilnya di Tmemo
Program
- Letakkan satu TMemo, dua TLabel, satu Tedit dan satu TButton pada form seperti gambar berikut:
- Pada FormCreate
tulis kode berikut:
procedure TForm1.FormCreate(Sender: TObject);
begin
//mengosongkan kotak entry dan memo
edit1.Clear;
edit2.Clear;
memo1.Clear;
end;
- Pada tombol kerjakan tulis kode berikut untuk
memeriksa keabsahan data:
//periksa keabsahan data
if trim(edit1.Text) = EmptyStr then
begin
ShowMessage('Harus diisi angka'); edit1.SetFocus;
exit;
end else if trim(edit2.Text) = EmptyStr thenbegin
ShowMessage('Harus diisi angka'); edit2.SetFocus;
exit;
end else
if StrToInt(trim(edit1.Text)) <= 1 then
begin
ShowMessage('Angka harus lebih besar dari 1');
edit1.SetFocus;
exit;end else
if StrToInt(trim(edit2.Text)) <= 1 thenbegin
ShowMessage('Angka harus lebih besar dari 1');
edit2.SetFocus; exit;
end;
- Pada tombol kerjakan tulis kode berikut untuk memeriksa
apakah angka tersebut prima atau tidak:
atas := StrToInt(edit1.Text);
bawah := StrToInt(edit2.Text);
for x:= atas to bawah do
begin
keluar := false;
pembagi := 2;
Jumlah := 0;
{============================================
test masing-masing angka.
Apakah mempunyai pembagi lebih dari 2 faktor
=============================================}
repeat
//bilangan yang dapat dibagi dengan hasil bulat dapat diperiksa dengan
//melihat hasil pembagiannya. Jika hasil pembagiannya nol berarti
//bilangan tersebut bukan pecahan
if (x mod pembagi) = 0 then
inc(Jumlah);
//jika lebih bilangan pembagi yang dapat membaginya lebih dari 2
//berarti sudah pasti bukan prima
if pembagi >= x then
keluar := not keluar
else
inc(pembagi);
until keluar;
{================================================
//karena menghitung mulai dari 2, bukan dari 1,
//maka hanya dicek jumlah = 1
//Angka 1 tidak perlu diperiksa karena hasilnya sudah pasti
================================================}
if Jumlah = 1 then memo1.Lines.Add(IntToStr(x));
end;
Download Kode Program
0 comments:
Posting Komentar