//Program by Valerian M P (valmc2.net) program toPrimeOrNotToPrime; var cek_prima: array[1..10000000]of boolean; //10e7 prime_list: array[1..700000]of longint; //ada sekitar 660rb prima antara 1 dan 10 juta, ini harusnya cukup counter,n,i,bound,count_ke,j: longint; procedure sieve(sieveSize: longint); begin for i:= 2 to sieveSize do cek_prima[i] := true; //praduga tidaklah komposit, kecuali 1 yg jelas2 bukan prima for i:= 2 to sieveSize do begin if(cek_prima[i]) then begin //kalau dia prima, semua kelipatan dia pasti ga prima j := i*i; inc(counter); prime_list[counter] := i; while(j <= sieveSize) do begin cek_prima[j] := false; inc(j,i); end; end; end; end; function isPrime(x: longint):boolean; //cuma bisa utk x <= (prima terbesar di prime_list)^2, but this should be enough la begin if(x <= bound) then isPrime := cek_prima[x] //udah tau, langsung keluarin aja else for i:= 1 to 10000000 do begin //iterasi utk seluruh array list_prime if(x mod prime_list[i] = 0) then isPrime := false; end; //isPrime := true; end; begin write('Masukan nilai N :'); readln(n); count_ke := 0; sieve(10000000); bound := 10000000; i := 2; //1 ga prima jadi lewatin aja while(count_ke < n) do begin if(isPrime(i)) then begin writeln(i); inc(count_ke); end; inc(i); end; end.