Diberikan program di bawah ini. Apa output dari program tersebut apabila diberikan input (secara berurutan) yaitu 1000 dan 2
function apaini(x : integer) : integer;
var
ans, i : integer;
begin
ans := 0;
i := 1;
while (i <= x) do begin
if (x mod i = 0) then ans := ans + 1;
i := i + 1;
end;
apaini := ans;
end;
var
i : integer;
N : integer;
x : integer;
ans : integer;
begin
readln(N, x);
ans := 0;
for i := 1 to N do begin
if (apaini(i) mod x = 0) then
ans := ans + 1;
end;
writeln(ans);
end.
TOKI 2012, IF ITB 2012. http://olimpiadeinformatika.com
Jika diperhatikan, fungsi apaini(x) akan menghasilkan banyak faktor dari x
Artinya, program utama menghitung ada berapa bilangan dari 1..1000 yang banyak faktornya adalah bilangan genap. Bilangan-bilangan ini adalah bilangan yang bukan bilangan kuadrat.
Sehinggga total bilangan yang dimaksud =
TOKI Pelatnas 2013
30 * 30 = 900
31 * 31 = 961
--------------------
32 * 32 = 1024
TOKI Pelatnas 2013
contoh faktor-faktor bilangan bukan kuadrat
12 = 1 , 2, 3, 4, 6, 12
14 = 1 , 2, 7, 14
15 = 1 , 3 , 5, 15
3 = 1 , 3
27 = 1 , 3, 9, 27
contoh faktor - faktor bilangan kuadrat
81 = 1, 3, 9, 27, 81
16 = 1, 2, 4, 8, 16
4 = 1 , 2, 4
9 = 1, 3, 9
TOKI Pelatnas 2013
bilangan kuadrat n memiliki sebuah faktor i, sehingga i = n / i,
contoh
3 = 9 / 3,
4 = 16 / 4
5 = 25 / 5
Masuk untuk menulis jawaban
Dengan input 1000 2, program diatas akan mecari, bilangan 1-1000 (inklusif) yang memiliki faktor genap(tergantung nilai x)
bilangan dengan faktor ganjil : bilangan kuadrat
bilangan dengan faktor genap: bilangan selain bilangan kuadrat, termasuk bilangan prima
banyaknya bilangan kuadrat 1-1000 = 31
output akhir: 1000-31 = 969
fungsi diatas merupakan banyaknya bil yang td bil kudrat dar 1...1000
maka banyaknya yaitu 969
TOKI Pelatnas 2013
banyaknya bilangan kuadrat <= 1000 adalah 31, sebab 31 * 31 = 961
banyak nya bilangan komplemen/yang bukan bilangan kuadrat adalah 1000 - 31 = 969