const
M=100;
var
x,i,n,h:longint;
A:array[1..M] of boolean;
B:array[1..M] of longint;
begin
for i:=1 to M do
A[i]:=true;
n:=0;
for i:=2 to M do
begin
if A[i] then
begin
n:=n+1;
B[n]:=i;
h:=i;
while h<M do
begin
h:=h+i;
if h<=M then A[h]:=false;
end;
end;
end;
readln(x);
writeln(B[x]);
end.
Berapakah hasil program di atas apabila x = 10?
A. 13
B. 17
C. 20
D. 29
E. Runtime Error
Pernah Jago OSK
coba aja dulu dari yg kecil x=1
B[1] = 2
B[2] =3
B[3] = 5
B[4]=7
dst..
terlihat yg muncul adalah bilangan prima yg mengisi B[x]
jadi bilangan prima ke 10= 29. D
Untuk Array A itu konsepnya sama seperti sieve of eratosthenes. Intinya pada akhirnya semua elemen pada array A yang bernilai True merupakan bilangan prima.
Untuk Array B menyimpan bilangan prima ke-i (B[i] -> bilangan prima ke-i)
Jadi tinggal tuliskan saja bilangan prima sampai yang ke sepuluh : 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 (D)
Masuk untuk menulis jawaban