PDA

View Full Version : Help me_Bài Tập Mảng



TrungTinh95
23-06-2010, 19:45
Cho một mảng các giá trị(giá trị tự cho vào 1<=N<=100) rồi xuất ra màng hình các số nguyên tố có trong mảng.
VD: Mảng 1: 1 2 3 4 5 6 7 8 9 10
Mảng 2: 2 3 5 7
Các Bác pro giúp em với em đang cần gắp?!?!
Thank you trước nha!!!!!!!!!!!!!!!!!!!!!!!!

dancuipascal
24-06-2010, 10:15
Var a:array[1..100]of integer;
i,n,j,d:integer;
begin
write('So phan tu:');readln(n);
for i:=1 to n do begin
write('Nhap phan tu thu ',i,':');readln(a[i]);
end;
for i:=1 to n do begin
d:=0;
for j:=1 to a[i] div 2 do
if i mod j=0 then d:=d+1;
if (a[i]>1) and (d=1) then write(a[i],' ');
end;
readln;
end.

Thử code này xem rồi báo lại kết quả ha..!!

TrungTinh95
24-06-2010, 17:58
Cảm ơn em đã chạy thử được rồi!!!!!!!!

[=========> Bổ sung bài viết <=========]

Nhưng nó có một rắc rối nhỏ ở đây là nó chỉ cho ra số nguyên tố khi nhập vào mảng từ 1 đến 10 theo số tăng thôi còn các trường hợp còn lại thì không được.
Bác thử xem lại thuật toán hình như nó để dùng tìm số chẳng nếu nhập từ 10 đến 20 theo chiều tăng dần thôi.

[=========> Bổ sung bài viết <=========]

Bác xem giùm em thuật toán này sao nó cứ ra số 1 là số nguyên tố không à??
program tongsonguyento;
uses crt;
const max=100;
type mang=array[1..max]of integer;
var a:mang;
t,i,n:integer;
begin
clrscr;
write('nhap so phan tu cho mang: ');
readln(n);
for i:=1 to n do
begin
write('a[',i,']= ');
readln(a[i]);
end;
t:=0;
for i:=1 to n do
begin
if (a[i]<=1) then
begin
t:=t;
a[t]:=a[i];
end
else
if ((a[i]=2)or(a[i]=3)) then
begin
t:=t+1;
a[t]:=a[i];
end
else
if ((a[i]mod 2<>0)and(a[i]mod 3<>0)) then
begin
t:=t+1;
a[t]:=a[i];
end;
end;
writeln('co ',t,' so nguyen to trong day');
writeln('');
writeln('Cac so nguyen to trong day');
for i:= 1 to t do
write(a[i]:2);
readln;
end.

nirvanat
25-06-2010, 08:50
Bài này vừa mới làm ở topic trên kìa....
Bài này cũng đơn giản lắm mà... có cần dài ngoằng thế không..
Chương trình mình viết thế này:


Var i,n,t:byte;
a:array[1..100] of byte;
Function snt(k:word):boolean;
Var m:boolean; i:word;
Begin
snt:=false;
If k<2 then exit;
If k<4 then m:=true
else
begin
m:=true;
For i:=2 to k div 2 do
If k mod i =0 then
begin
m:=false;break;
end;
end;
snt:=m;
End;
BEGIN
write('Nhap n');readln(n);
writeln('Mang 1:');
t:=1;
For i:=1 to n do
begin
write(i:4);
If snt(i) then
begin
a[t]:=i;
t:=t+1;
end;
end;
writeln;
writeln('Mang 2:');
For i:=1 to t-1 do write(a[i]:4);
Readln;
End.

dancuipascal
25-06-2010, 09:19
Bạn thử lại code xem mình nhầm đọan a[i] div 2 ghi thành i div 2

nirvanat
25-06-2010, 09:25
bác ơi... bài này chỉ có nhập n thôi. mảng đó sẽ là mảng các phần tử từ 1..n
bài này có thể nói đơn giản là in ra các số nguyên tố nhỏ hơn hoặc bằng n :)