Bài tập  /  Bài đang cần trả lời

Viết chương trình nhập số nguyên dương n từ bàn phím (n < 104). In ra màn hình:

LẬP TRÌNH PASCAL
Bài 2: (5đ) Ước số.
Viết chương trình nhập số nguyên dương n từ bàn phím (n < 104). In ra màn hình:
+ Ước của n lớn nhất nhỏ hơn n.
+ Tổng các chữ số của n.
+ Số không vượt quá n có nhiều ước nguyên dương nhất (nếu có nhiều số
như vậy thì in ra số có giá trị bé nhất).
Ví dụ: Với n = 435 thì in ra kết quả: Uoc cua 435 lon nhat la 145
Tong cac chu so cua 435 la 12
So co nhieu uoc nhat la 360
2 Xem trả lời
Hỏi chi tiết
452
Tham khảo câu trả lời từ Trợ lý ảo Lazi
```pascal
program UocSo;
var
n, i, maxUoc, tongChuSo, maxSo: integer;

function UocLonNhat(n: integer): integer;
var
i: integer;
begin
UocLonNhat := 1;
for i := 2 to n div 2 do
begin
if n mod i = 0 then
begin
UocLonNhat := i;
end;
end;
end;

function TongChuSo(n: integer): integer;
var
sum, digit: integer;
begin
sum := 0;
while n > 0 do
begin
digit := n mod 10;
sum := sum + digit;
n := n div 10;
end;
TongChuSo := sum;
end;

function SoNhieuUoc(n: integer): integer;
var
i, maxUoc, maxSo: integer;
begin
maxUoc := 0;
maxSo := 0;
for i := 1 to n do
begin
if n mod i = 0 then
begin
if UocLonNhat(i) = i then
begin
if maxUoc < i then
begin
maxUoc := i;
maxSo := i;
end;
end;
end;
end;
SoNhieuUoc := maxSo;
end;

begin
write('Nhap so nguyen duong n: ');
readln(n);

maxUoc := UocLonNhat(n);
tongChuSo := TongChuSo(n);
maxSo := SoNhieuUoc(n);

writeln('Uoc cua ', n, ' lon nhat la ', maxUoc);
writeln('Tong cac chu so cua ', n, ' la ', tongChuSo);
writeln('So co nhieu uoc nhat la ', maxSo);
end.
```
Bạn có thể sao chép code trên và chạy thử để kiểm tra kết quả. Chúc bạn thành công!
1
0
+5đ tặng
program UocSo;

var
  n, i, maxUoc, tong, soNhieuUoc, divisors, j: integer;

function UocLonNhat(n: integer): integer;
begin
  for i := n - 1 downto 1 do
  begin
    if n mod i = 0 then
    begin
      UocLonNhat := i;
      break;
    end;
  end;
end;

function TongChuSo(n: integer): integer;
begin
  tong := 0;
  while n > 0 do
  begin
    tong := tong + (n mod 10);
    n := n div 10;
  end;
  TongChuSo := tong;
end;

function SoNhieuUoc(n: integer): integer;
begin
  maxUoc := 0;
  soNhieuUoc := 0;
  for i := 1 to n do
  begin
    divisors := 0;
    for j := 1 to i do
    begin
      if i mod j = 0 then
        divisors := divisors + 1;
    end;
    if divisors >= maxUoc then
    begin
      maxUoc := divisors;
      soNhieuUoc := i;
    end;
  end;
  SoNhieuUoc := soNhieuUoc;
end;

begin
  // Nhập số nguyên dương n từ bàn phím
  writeln('Nhap so nguyen duong n (n < 10^4): ');
  readln(n);

  // Tìm ước của n lớn nhất nhỏ hơn n
  maxUoc := UocLonNhat(n);
  writeln('Uoc cua ', n, ' lon nhat nho hon ', n, ' la ', maxUoc);

  // Tính tổng các chữ số của n
  tong := TongChuSo(n);
  writeln('Tong cac chu so cua ', n, ' la ', tong);

  // Tìm số không vượt quá n có nhiều ước nguyên dương nhất
  soNhieuUoc := SoNhieuUoc(n);
  writeln('So co nhieu uoc nhat va khong vuot qua ', n, ' la ', soNhieuUoc);
end.
 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập
0
0
program UocSo;
var
    n, i, maxUoc, tongChuSo, maxUocSo: integer;

function TimUocLonNhat(n: integer): integer;
var
    i: integer;
begin
    TimUocLonNhat := 1;
    for i := 2 to n div 2 do
    begin
        if n mod i = 0 then
        begin
            TimUocLonNhat := i;
        end;
    end;
end;

function TinhTongChuSo(n: integer): integer;
var
    tong, temp: integer;
begin
    tong := 0;
    temp := n;
    while temp > 0 do
    begin
        tong := tong + (temp mod 10);
        temp := temp div 10;
    end;
    TinhTongChuSo := tong;
end;

function DemUoc(n: integer): integer;
var
    i, dem, maxUocSoFar: integer;
begin
    dem := 0;
    maxUocSoFar := 0;
    for i := 1 to n do
    begin
        if n mod i = 0 then
        begin
            dem := dem + 1;
            if dem >= maxUocSoFar then
            begin
                maxUocSoFar := dem;
                maxUocSo := i;
            end;
        end
        else
        begin
            dem := 0;
        end;
    end;
    DemUoc := maxUocSo;
end;

begin
    // Nhập số nguyên dương n
    writeln('Nhap so nguyen duong n:');
    readln(n);

    // Tìm ước số lớn nhất nhỏ hơn n
    maxUoc := TimUocLonNhat(n);
    writeln('Uoc cua ', n, ' lon nhat la ', maxUoc);

    // Tính tổng các chữ số của n
    tongChuSo := TinhTongChuSo(n);
    writeln('Tong cac chu so cua ', n, ' la ', tongChuSo);

    // Tìm số có nhiều ước nhất không vượt quá n
    maxUocSo := DemUoc(n);
    writeln('So co nhieu uoc nhat la ', maxUocSo);

    readln;
end.

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường
×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k
Gửi câu hỏi
×