//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;
-
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).
-
Mengacu pada potongan algoritma di atas. Bila max bernilai 100, berapa kali perintah writeln(i) dieksekusi?
-
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;
-
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.