Viết chương trình (pascal) nhập vào một số nguyên dương n
a) Nhập vào m và xác định cặp số m,n có phải số hứa hôn hay không?
b) Nhập vào số nguyên, tính và xuất ra màn hình nm
c) Hãy cho biết n! kết thúc bởi bao nhiêu số 0?
d) Nhập vào số nguyên dương m, tìm và xuất ra màn hình ước chung lớn nhất và bội chung nhỏ nhất của m,n
uses crt;
var n,m,i,ucln,bcnn,dem:integer;
kq:real;
st:string;
gt:longint;
{--------------------------chuong-trinh-con-tinh-tong-uoc-thuc-su---------------------}
function tonguoc(x:integer):integer;
var t,i:integer;
begin
t:=0;
for i:=1 to x-1 do
if x mod i=0 then t:=t+i;
tonguoc:=t;
end;
{-------------------------chuong-trinh-chinh--------------------}
begin
clrscr;
repeat
write('Nhap n='); readln(n);
write('Nhap m='); readln(m);
until (n>0) and (m>0);
if (tonguoc(n)=m+1) and (tonguoc(m)=n+1) then writeln(n,' va ',m,' la cap so hua hon')
else writeln(n,' va ',m,' khong la cap so hua hon');
kq:=1;
for i:=1 to m do
kq:=kq*n;
writeln(n,'^',m,'=',kq:4:2);
gt:=1;
for i:=1 to n do
gt:=gt*i;
str(gt,st);
dem:=0;
for i:=1 to length(st) do
if st[i]='0' then inc(dem);
writeln(n,'! ket thu boi ',dem,' so 0');
ucln:=1;
if n>m then
begin
for i:=1 to m do
if (n mod i=0) and (m mod i=0) then
begin
if ucln<i then ucln:=i;
end;
end
else begin
for i:=1 to n do
if (n mod i=0) and (m mod i=0) then
begin
if ucln<i then ucln:=i;
end;
end;
bcnn:=n*m;
for i:=n*m downto 1 do
if (i mod n=0) and (i mod m=0) then
begin
if bcnn>i then bcnn:=i;
end;
writeln('Uoc chung lon nhat cua ',m,' va ',n,' la: ',ucln);
writeln('Boi chung lon nhat cua ',m,' va ',n,' la: ',bcnn);
readln;
end.