Bài tập HSG Tin Học, Help me! Bài tập 1: Nhập vào dãy số nguyên gồm 100 phần tử a. In ra các số nguyên tố có trong dãy. Và đếm xem có bao nhiêu số nguyên tố trong dãy đó. b. In ra số hoàn chỉnh có trong dãy. Bài tập 2: Nhập vào dãy số nguyên gồm 100 phần tử: a. Tìm số lớn nhất trong dãy số. b. Số lượng bằng số lớn nhất trong dãy. c. Tìm số nhỏ nhất trong dãy số. d. Nhập x là số nguyên. In ra thứ tự các phần tử >x. e. Sắp xếp dãy số tăng dần và in dãy đã sắp xếp ra màn hình. (thuộc)
2 câu trả lời
bài 1:
function nto(n:longint):boolean;
var i : longint;
begin
if n < 2 then exit(false);
for i := 2 to trunc(sqrt(n)) do
if n mod i = 0 then exit(false);
exit(true);
end;
var a,b,c:array[0..10000007] of longint;
i,n,d,j:longint;
begin
write('Nhap vao so phan tu ');readln(n);
write('Nhap vao phan tu ');
for i := 1 to n do
begin
read(a[i]);
if nto(a[i]) then
begin
inc(d);
b[d]:=a[i];
end
else
begin
inc(j);
c[j]:=a[i];
end;
end;
write('a.',' So nguyen to trong day ');
for i := 1 to d do
write(b[i],' '); writeln;
write('Co ',d,' so nguyen to'); writeln;
write('b.',' So hoan chinh trong day ');
for i := 1 to j do
write(c[i],' ');
readln;readln;
end.
bài 2
var a,vt:array[0..100007] of longint;
i,n,ma,mi,x,d,j,c,l,tam:longint;
begin
write('Nhap vao so phan tu ');readln(n);
ma := -maxlongint;
mi := maxlongint;
write('Nhap vao phan tu ');
for i := 1 to n do
begin
read(a[i]);
if ma < a[i] then
begin
ma := a[i];
c := 1;
end
else if ma = a[i] then inc(c);
if mi > a[i] then mi := a[i];
end;
write('Nhap vao so x ');readln(x);
for i := 1 to n do
begin
if a[i] > x then
begin
inc(l);
vt[l]:=i;
end;
end;
for i := 1 to n - 1 do
for j := i + 1 to n do
if a[i] > a[j] then
begin
tam:=a[i];
a[i]:=a[j];
a[j]:=tam;
end;
writeln('a.',' So lon nhat trong day la ',ma);
writeln('b.',' So luong so lon nhat la ',c);
writeln('c.',' So nho nhat trong day la ',mi);
write('d',' Vi tri cac so lon hon x la ');
for i := 1 to l do
write(vt[i],' '); writeln;
write('e.',' Day so tang dan ');
for i := 1 to n do
write(a[i],' ');
readln;readln;
end.
Bài 1:
program bai_giai;
uses crt;
var A:array[1..100] of integer;
n,i,dem:byte;
function ktnt(k:integer):boolean;
var j:integer;
begin
ktnt:=false;
if k<2 then exit;
for j:=2 to trunc(sqrt(k)) do
if k mod j=0 then exit;
exit(true);
end;
BEGIN
clrscr;
write('Nhap so luong phan tu: '); readln(n);
write('Nhap day: ');
for i:=1 to n do read(A[i]);
dem:=0;
for i:=1 to n do
if ktnt(A[i]) then
begin
write(A[i],' ');
dem:=dem+1;
end;
if dem=0 then write('Co ',dem,' so nguyen to')
else
begin
writeln;
write('Co ',dem,' so nguyen to');
end;
readln; readln;
END.
Bài 2:
program bai_giai;
uses crt;
var A:array[1..100] of integer;
n,i,j,dem:byte;
x,max,min,tg:integer;
begin
clrscr;
write('Nhap so phan tu: '); readln(n);
write('Nhap day: ');
for i:=1 to n do read(A[i]);
max:=A[1]; min:=A[1];
for i:=2 to n do
begin
if A[i]>max then max:=A[i];
if A[i]<min then min:=A[i];
end;
writeln('a. ',max);
dem:=0;
for i:=1 to n do
if A[i]=max then dem:=dem+1;
writeln('b. ',dem);
writeln('c. ',min);
write('d. Nhap x: '); readln(x);
for i:=1 to n do
if A[i]>x then write(i,' ');
writeln;
for i:=1 to n-1 do
for j:=i+1 to n do
if A[i]>A[j] then
begin
tg:=A[i]; A[i]:=A[j]; A[j]:=tg;
end;
write('e. ');
for i:=1 to n do write(A[i],' ');
readln;
end.