Tạo các biến cho chương trình như sau: i, j, k, n, do_ben, max kiểu longint
{Lập hàm tính tích các chữ số của N}
function tich(biến n kiểu longint) trả về dữ liệu kiểu longint
Tạo biến kqua có kiểu dữ liệu longint
Khi n=0 thì gán biến kqua = 0 ngược lại gán biến kqua = 1
Chạy vòng lặp While khi n<>0
gán kqua = kqua * (n mod 10)
gán n = n div 10
Sau khi chạy xong vòng lặp thì gán kết quả trả về cho hàm tich = dữ liệu của biến kqua
{Chương trình chính}
Bắt đầu chương trình
Chạy vòng lặp While khi true (luôn luôn chạy) yêu cầu nhập và kiểm tra số nguyên N
Xóa dữ liệu hiển thị trên màn hình
In yêu cầu nhập số nguyên không âm N, điều kiện (0 <= N <= 2,000,000,000)
Đọc dữ liệu nhập và gán vào biến n
Kiểm tra biến n (nếu lớn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 2,000,000,000) thì thoát vòng lặp While
Ngược lại thì không thoát vòng lặp While
Gán biến max = 1
Chạy vòng For duyệt biến i từ 1 đến n
gán biến do_ben = 0
gán biến j = i
Chạy vòng lặp While khi j>9
gán biến do_ben = do_ben + 1
gán biến j = kết quả hàm tich(j)
Nếu biến do_ben lớn hơn hoặc bằng biến max thì
gán biến max = do_ben
gán biến k = i
Thoát vòng For
In kết quả Số bé hơn N có độ bền lớn nhất là K
In kết quả Độ bền của K là max
Chương trình Pascal
program Do_Ben_So_Nguyen;
uses crt;
var i,j,k:longint;
var n,do_ben,max:longint;
function tich(n:longint):longint;
var kqua:longint;
begin
if n=0 then kqua:=0 else kqua:=1;
while n<>0 do
begin
kqua:=(kqua*(n mod 10));
n:=(n div 10);
end;
tich:=kqua;
end;
begin
while true do
begin
clrscr;
write('Nhap so nguyen khong am N (0 <= N <= 2,000,000,000): ');
readln(n);
if (n>=0) and (n<=2000000000) then break;
end;Thoát chương trình