Chương trình trong pascal để tìm soos hoanf haor

Ví dụ:

  • Số 6 có ước nhỏ hơn nó là 1,2,3. Tổng là 1+2+3=6 vậy 6 là số hh.
  • Số 8 chia hết cho 1, 2, 4 tổng 1+2+4=7 → 8 không phải là số hh.
  • Số 28 chia hết cho 1, 2,4, 7, 14 tổng 1+2+4+7+14=28 → 28 là số hh.

Viết chương trình nhập vào một số n từ bàn phím thông báo ra màn hình số đó có phải là số hoàn hảo hay không (yêu cầu dùng hàm).

PROGRAM SoHoanHao;
USES CRT;
VAR n:INTEGER;

FUNCTION KiemTra(x:INTEGER):BOOLEAN;
	VAR tam,i:INTEGER;
		BEGIN
			tam:=0; 
			FOR i:= 1 TO (x DIV 2) DO
			IF x MOD i = 0 THEN tam:=tam+i;
		IF tam = x THEN KiemTra:=TRUE
		Else KiemTra:=False;
	END;
	
BEGIN
	Clrscr;
	Write('Nhap so can kiem tra ');Readln(n);
	IF KiemTra(n) THEN 
		Writeln('So ',n,' la so hoan hao')
	ELSE
		Writeln('So ',n,' khong phai la so hoan hao');
	Readln;
END. 

4 44 votes

Đánh giá bài viết

Ta định nghĩa số hoàn hảo như sau: Số hoàn hảo là một số tự nhiên mà tổng tất cả các ước tự nhiên thực sự của nó thì bằng chính nó. Vậy ước thực sự là gì? Là các ước không bằng số đó. Hãy tham khảo với onthihsgngay bên dưới nhé.

VD: 6 là số hoàn hảo vì 6 = 1+2+3

Ta hãy cùng tìm hiểu về thuật toán kiểm tra số hoàn hảo và minh họa chúng trong ngôn ngữ lập trình Pascal và Scratch để xem có gì khác biệt không nhé.

Video hướng dẫn viết chương trình kiểm tra số hoàn hảo

Ta nhận thấy bài toán này phải sử dụng kĩ thuật cộng dồn để tính tổng (S) các ước thực sự của số a.

Hàm kiểm tra số hoàn hảo

Khởi động S =0;

Duyệt từ 1 đến a – 1 số nào là ước của a thì cộng dồn vào S

Thật đơn giản phải không nào, sau đây chúng ta cùng xem minh họa thuật toán này trong Pascal và Scratch có gì khác không nhé.

Sơ đồ thuật toán tìm số hoàn hảo

Dưới đây là sơ đồ thuật toán tìm số hoàn hảo các bạn hãy tham khảo nhé.

Chương trình trong pascal để tìm soos hoanf haor

Viết chương trình kiểm tra số hoàn hảo trong pascal

Chương trình dưới đây được viết bằng cách sử dụng chương trình con, mình luôn thích sử dụng chương trình con để viết bởi nó giúp mình dễ phân tích một bài toán. Có thể lúc đầu các bạn chưa quen với chương trình con thì thấy nó phức tạp nhưng khi đã thạo rồi thì các bạn sẽ thấy được giá trị hết sức to lớn của nó.

Dữ liệu vào file: hoanhao.inp Dữ liệu ra file: hoanhao.out
Chứa số n (n <1 tỉ) Yes (No)

Code Pascal

Chương trình kiểm tra số hoàn hảo trong Scratch

Nhìn vào thuật toán thì các bạn có thể dễ dàng thực hiện được chương trình kiểm tra số hoàn hảo trong Scratch rồi phải không nào, mình sẽ gợi ý như sau:

Các bạn hãy tạo một đối tượng (Cô giáo chẳng hạn) và lập trình cho đối tượng như sau:

  • Khi lá cờ được nhấn
  • Hỏi ‘bạn muốn kiểm tra xem số nào có phải là số hoàn hảo không?’ và đợi người dùng trả lời
  • Tạo và khởi động biến i = 1, biến S để lưu tổng các ước bằng 0
  • Lặp lại “Trả lời” – 1 lần (“Trả lời” chứa số cần kiểm tra có phải là số hoàn hảo hay không)
    Nếu trả lời chia hết cho i thì cộng dồn i vào S
    Tăng i lên 1
  • Kết thúc vòng lặp ta chỉ cần kiểm tra xem S có bằng “Trả lời” không và kết luận.

Các bạn hãy tự thực hiện xem thế nào nhé. Chúc các bạn thành công và xin hẹn gặp lại trong bài viết tiếp theo.

Back to top button

Copyright © 2022 Hoc247.net

Đơn vị chủ quản: Công Ty Cổ Phần Giáo Dục HỌC 247

GPKD: 0313983319 cấp ngày 26/08/2016 tại Sở KH&ĐT TP.HCM

Giấy phép Mạng Xã Hội số: 638/GP-BTTTT cấp ngày 29/12/2020

Địa chỉ: P401, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM

Cho biến i chạy từ 1 đến n. Xét i. Nếu nó là số hoàn chỉnh thì in ra.

Program Tim_uoc_2;

uses crt;

Var S, n, i,j: longint;

Begin

clrscr;

Write('Nhap so n ='); readln(n);

For i:=1 to n do

Begin

S:=0;

For j:=1 to i do if i mod j = 0 then S:=S+j;

if S = 2*i then write(i:6,',');

end;

readln

end.

Câu hỏi

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

uses crt;

var a:array[1..100]of integer;

i,n:integer;

begin

clrscr;

write('Nhap n='); readln(n);

for i:=1 to n do 

  begin

write('A[',i,']='); readln(a[i]);

end;

for i:=1 to n do 

  if (a[i] mod 2=0) and (a[i]<20) then write(a[i]:4);

readln;

end.

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

Cho biến i chạy từ 1 đến n. Xét i. Nếu nó là số hoàn chỉnh thì in ra.

Program Tim_uoc_2;

uses crt;

Var S, n, i,j: longint;

Begin

clrscr;

Write('Nhap so n ='); readln(n);

For i:=1 to n do

Begin

S:=0;

For j:=1 to i do if i mod j = 0 then S:=S+j;

if S = 2*i then write(i:6,',');

end;

readln

end.

Chương trình trong pascal để tìm soos hoanf haor

uses crt;

var n,i,t,j:integer;

begin

clrscr;

write('Nhap n='); readln(n);

for i:=1 to n do 

  begin

t:=0;

for j:=1 to i do 

  if i mod j=0 then t:=t+j;

if t=i then write(i:4);

end;

readln;

end.

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

{program bt_1;
uses crt;
Var:S ,n, i, j:longint;
Begin 
  clrsr;
  Write('Nhap n');Readln(n);
    For i:=1 to n do
    Begin
      S:=0;
      For j:=0 to i do
      if i mod j:=0 then S:=S+j;
      if S=2*i then Write (i:5);
    end;
readln;
end.
}

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

uses crt;

var n,i,t:integer;

begin

clrscr;

write('Nhap n='); readln(n);

t:=0;

for i:=1 to n-1 do 

  if n mod i=0 then t:=t+i;

if t=n then writeln(n,' la so hoan chinh')

else writeln(n,' khong la so hoan chinh');

readln;

end.

Chương trình trong pascal để tìm soos hoanf haor

program hoan_chinh;

uses crt;

var n,i,s:integer;

begin

clrscr;

write('nhap n:');readln(n);

for i:=1 to n-1 do

 begin

 if n mod i = 0 then s:=s+i;

 end;

if s=n then writeln('1') {n là số chính phương thì viết 1}

else writeln('0');{n không là số chính phương thì viết 0}

end.

Chương trình trong pascal để tìm soos hoanf haor

  • ksie

20 tháng 1 lúc 12:55

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

uses crt;

var n,i,dem,j,t:integer;

kt:boolean;

begin

clrscr;

readln(n);

t:=0;

for i:=2 to n do 

begin

kt:=true;

for j:=2 to i-1 do 

  if i mod j=0 then kt:=false;

if kt=true then 

begin

write(i:4);

t:=t+i;

end;

end;

writeln;

writeln(t);

readln;

end.

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

Cho biến i chạy từ 1 đến n. Xét i. Nếu nó là số hoàn chỉnh thì in ra.

Program Tim_uoc_2;

uses crt;

Var S, n, i,j: longint;

Begin

clrscr;

Write('Nhap so n ='); readln(n);

For i:=1 to n do

Begin

S:=0;

For j:=1 to i do if i mod j = 0 then S:=S+j;

if S = 2*i then write(i:6,',');

end;

readln

end.

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

uses crt;

var n,i,t,j:integer;

begin

clrscr;

readln(n);

for i:=1 to n do 

  begin

t:=0;

for j:=1 to i div 2 do 

  if i mod j=0 then t:=t+j;

if t=i then write(i:4);

end;

readln;

end.

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

uses crt;

var t,n,m:longint;

//chuongtrinhcon

function gt(k:longint):longint;

var i,a:integer;

begin

a:=1;

for i:=1 to k do 

  a:=a*i;

gt:=a;

end;

//chuongtrinhchinh

begin

clrscr;

readln(n,m);

writeln(gt(n)+gt(m);

readln;

end.

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

uses crt;

var n,i,s:integer;

begin

clrscr;

n:=1;

s:=0;

repeat

s:=s+n;

n:=n+1;

until s>1000;

writeln(n);

readln;

end.

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

Chương trình trong pascal để tìm soos hoanf haor

  • ....

22 tháng 10 2021 lúc 8:53

uses crt;

var i:integer;

begin

clrscr;

for i:=0 to 9999 do 

  if trunc(sqrt(i))=sqrt(i) then write(i:4);

readln;

end.