OSP 2013

Perhatikan potongan program di bawah ini, untuk digunakan pada soal no 40 dan 41:
function mencari(N:integer):integer;
var i,j,z:integer;
begin
    mencari:=0;
    for i:=1 to N do
    begin
        j:=1;
        z:=0;
        while (j <= i) do
        begin
            if (i mod j = 0) then inc(z);
            inc(j);
        end;
        if (z mod 2 <> 0) then
            mencari:=mencari+1;
    end;
end;
  1. Berapakah nilai yang dihasilkan dari pemanggilan mencari(50)?

  2. Berapakah nilai yang dihasilkan dari pemanggilan mencari(9000)?


    Pada perulangan for dari 1 sampai N, terdapat perulangan while yang akan menambah nilai z jika i mod j = 0, artinya z merupakan banyaknya faktor dari i.
    Nilai dari fungsi adalah jika z merupakan bilangan ganjil yang artinya fungsi akan bernilai banyaknya bilangan dari 1 sampai N yang memiliki jumlah faktor ganjil.

    Bilangan yang memiliki jumlah faktor ganjil adalah bilangan yang dapat dinotasikan an x bo x…x mz, dimana n,o,…,z adalah bilangan genap. Notasi tersebut juga dapat ditulis menjadi:
    (an/2 x bo/2 x…x mz/2)2. Sehingga untuk mencari nilai yang dihasilkan dari fungsi adalah dengan menghitung banyaknya bilangan kuadrat yang kurang dari N.

  1. Bilangan kuadrat ≤ 50:
    1, 4, 9, 16, 25, 36, 49
    Jadi nilai yang dihasilkan dari pemanggilan mencari(50) adalah 7.

  2. Karena 9000 terlalu besar untuk dicari satu-satu, maka cari bilangan kuadrat terbesar yang kurang dari 9000.
    1002 = 10000 dan 902 = 8100, sehingga nilainya pasti di antara 90-100.

    Jika diambil tengahnya 952 = 9025 yang mana sedikit di atas 9000. Dengan demikian banyaknya bilangan kuadrat yang kurang dari 9000 = 94.

Share Now:

5 2 votes
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!