Tải bản đầy đủ
CÁC THUẬT TOÁN VỀ SỐ

CÁC THUẬT TOÁN VỀ SỐ

Tải bản đầy đủ

Tài liệu bồi dưỡng HSG Pascal

Trường THCS Thái Hòa
N:=n div 10;

End;
TONGCS:=s;
End;
4/ Thuật toán kiểm tra số hoàn thiện
FUNCTION SOHT(n:integer):boolean;
Var I,s:integer;
Begin
SOHT:=false;
S:=0;
For i:=1 to n div 2 do
If n mod i=0 then
S:=s+I;
If s=n then
SOHT:=true;
End;
5/ Thuật toán kiểm tra một số có thuộc dãy Fibonaci không
FUNCTION FIBO(n:integer):boolean;
Var f1, f2, f:integer;
Begin
F1:=0;
F2:=1;
F:=f1+f2;
While fBegin
F1:=f2;
F2:=f;
F:=f1+f2;
End;
If f=n then FIBO:=true
Else
FIBO:=false;
End;
(dưới đây là bài tập dùng hàm để in các số fibonaci với n nhập vào từ bàn phím)

Giáo viên: Nguyễn Quang Hiệu

Trang 34

Tài liệu bồi dưỡng HSG Pascal

Trường THCS Thái Hòa

Program Tinh_Fibonacci;
Uses Crt;
Var i,n,kq:integer;
Function F(x:integer):integer; Begin
If (x=1) or (x=2) then
F:=1
Else
F:=F(x-1)+F(x-2);
End;
Begin
Clrscr;
Writeln('TINH SO FIBONACII:');
Write('Nhap n = ');
Readln(n);
for i:=1 to n do
Write(F(I):3);
Readln;
End.
6/ Thuật toán kiểm tra số chính phương
FUNCTION SCP(X:integer):boolean;
Begin
Scp:=false;
If sqrt(x)=trunc(sqrt(x)) then
Scp:=true;
End;
7/ Thuật toán in ra các số fibonaci
FUNCTION FIB(x:integer):integer;
Begin
if x<=2 then fib:=1;
if x>=3 then
fib:=fib(x-1)+fib(x-2);
End;

Giáo viên: Nguyễn Quang Hiệu

Trang 35

Tài liệu bồi dưỡng HSG Pascal

Trường THCS Thái Hòa

CÁC THUẬT TOÁN TRÊN MẢNG
A/ MẢNG MỘT CHIỀU
1/ Thuật toán sắp xếp mảng (tăng dần)
a/ Sắp xếp bằng phương pháp chọn trực tiếp
PROCEDURE SXTANG(var A:mang);
Var I, j, tam:integer;
Begin
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;
End;
b/ Sắp xếp bằng phương pháp nổi bọt
PROCEDURE SXNOIBOT(var a:mang);
Var I, j, tam:integer;
Begin
For i:=2 to n do
For j:=n downto I do
If a[j]Begin
Tam:=a[j];
A[j]:=aj-1];
A[j-1]:=tam;
End;
End;
(Chú ý: thuật toán sắp xếp mảng giảm dần tương tự)
c/ Sắp xếp mảng sao cho các số lẻ nằm trước day, các số chẵn nằm ở cuối dãy, các số 0
nằm ở giữa dãy.
PROCEDURE sapxep(var a:mang);
Giáo viên: Nguyễn Quang Hiệu

Trang 36

Tài liệu bồi dưỡng HSG Pascal

Trường THCS Thái Hòa

Var d, I: integer;
Tam:integer;
Begin
D:=0;
For i:=1 to n do
If (a[i] mod 2 <>0) and (a[i]<>0) then
Begin
D:=d+1;
Tam:=a[i];
A[i]:=a[d];
A[d]:=tam;
End;
For i:=d+1 to n do
If a[i]=0 then
Begin
D:=d+1;
Tam:=a[i];
A[i]:=a[d];
A[d]:=tam;
End;
End;
2/ Thuật toán tìm giá trị lớn nhất, nhỏ nhất trong mảng
MAX:=A[1];
For i:=2 to n do
If maxMax:=a[i];
Min:=a[1];
For i:=2 to n do
If min> a[i] then
Min:=a[i];
3/ Thuật toán tìm phần tử có giá trị bằng x trong mảng
a/ tìm trong mảng có phần tử x không?
FUNCTION timx(x:integer; A:mang):boolean;
Var i:integer; kt:boolean;
Begin
Kt:=false;
For i:=1 to n do
Giáo viên: Nguyễn Quang Hiệu

Trang 37