Code chương trình này chỉ mới tính tổng các số nguyên tố từ 1 --> n thôi.
Nếu bạn tính trung bình cộng thì đổi câu lệnh write(tong) trong procedure xl thành write(tong/n:0:2).
Bạn NguyenChiCuong mới học Pascal, mà bạn langtusitinh225đã dùng hàm và thủ tục để giải bài này thỉ làm sao mà bạn NguyenChiCuong hiểu được ( mình cũng thế ). Mình có 1 bài này đơn và dễ hiểu hơn.
Chưa test thử , nếu có gì sai sót mong các bạn thông cảm nhé ^^!!
Có gì sai sót mong các bạn thông cảmn ha ^_^!!Code:Program bt; Var i,j,n : integer; tong : real; Begin Write ('Nhap n:');Readln(n); tong:=0; For i:=2 to n do Begin j:=2; While i mod j <> 0 do {Kiểm tra số ngtố} j:=j+1; If i = j then {Nếu i là số ngtố thì cộng dồn i cho tong} tong:=tong + i; end; Write ('Tong =',tong/n); Readln; End.
mình nghĩ là nên dùng 1 mảng lưu các số nguyên tố đã tìm dc lại, sau đó các số nào không chia hết cho các số trong ấy là số nguyên tố và cho vào mảng.
var mang:array[1..10000]of longint;
i,n,k:longint;
function kt(a:longint):boolean;
var j:longint;
begin
kt:=true;
for j:=2 to k do
if a mod mang[j]=0 then
begin
kt:=false;
break;
end;
end;
begin
readln(n);
for i:=1 to n do
if kt(i)then
begin
inc(k);
mang[k]:=i;
end;
{.......}
end.
phần trong{} là tính trung bình cộng.
Code của tớ như vầy anh em góp ý nhá ^^! :
Program test;
Var i,j,n,dem : integer; tong : Longint;
Begin
Write ('Nhap n:');Readln(n);
tong:=0;
For i:=2 to n do
Begin
j:=2;
While i mod j <> 0 do
inc(j);
If j = i - 1 then
begin
inc(dem)
tong:=tong + i;
End;
end;
Write ('Tong =',tong/dem);
Readln;
End.
Bookmarks