OSP 2012

Potongan program berikut ini merupakan pseudocode untuk soal nomor 33-34
//inisiasi semua T[..] sebagai true
for i := 2 to max do
begin
    if (T[i]) then
    begin
        writeln(i);
        j := i;
        while (j*i <= max) do
        begin
            ... // perintah yang hilang
            j := j + 1;
        end;
    end;
end;
  1. Agar algoritma tersebut dapat menampilkan semua bilangan prima 2,3,5,7,… dan seterusnya hingga nilai max, perintah apa yang harus dituliskan di bagian “… //perintah yang hilang”? (hint : perintah hanya terdiri dari 1 statement).

  2. Mengacu pada potongan algoritma di atas. Bila max bernilai 100, berapa kali perintah writeln(i) dieksekusi?


  1. T merupakan array yang nilai awalnya adalah true. Kemudian program akan masuk dan mencetak nilai i jika T[i] bernilai true. Karena hanya ingin mencetak bilangan prima, maka T[i] harus diubah menjadi false untuk i yang bukan bilangan prima.

    Pada perulangan di dalamnya, program akan menjalankan perulangan dari j*i , (j+1)*i dan seterusnya. Sehingga j*i dipastikan bukan bilangan prima. Oleh karena itu perintah yang hilang haruslah mengubah tanda j*i bahwa j*i bukan prima. Dengan demikian perintah yang hilang adalah
    T[i*j]:=false;

  2. Algoritma tersebut menampilkan semua bilangan prima hingga nilai max. Karena max bernilai 100, maka program akan menjalankan perintah writeln sebanyak bilangan prima kurang dari 100, yaitu 25.

Share Now:

5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

Langganan

Subscribe To Our Newsletter

0
Would love your thoughts, please comment.x
()
x

Follow TikTok Kami @cahinfor

Pembahasan soal tahun 2023 sudah tersedia di TikTok Kami loh!