Số hoàn hảo.
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.
cach tim so hoan hao trong mang lam sao vay thay
Nếu đề là in các số hoàn hảo trong mảng ra thì chỉ cần thêm một vòng FOR vào là được For i:=1 to n do IF KiemTra(a[i]) ……
Số hoàn thiện là số tự nhiên có tổng các ước của nó (không kể chính nó) bằng chính nó. Viết chương trình kiểm tra xem một số tự nhiên n( n<1000) có phải là số hoàn thiện hay không? Ví dụ: 6 là số hoàn thiện vì 6 có các ước 1,2,3, 6 mà 1+2+3=6. Tệp vào gồm 1 số nguyên n. Tệp ra ghi số 1 nếu n là số hoàn thiện, ghi số 0 nếu n không là số nguyên tố. Tên bài Tệp vào Tệp ra SHT.cpp SHT.inp SHT.out Ví dụ 6 1 7 0 bài… Read more »
Code ở trên của Pascal, hình như bạn muốn hỏi C++, cách làm cũng thương tự thôi.
Tại sạo lại chạy từ 1 đến x/2 vậy ak
Lớn hơn số đấy thì không chia hết được nữa.
mik van chua hieu lam
Ví dụ số 100 thay vì chạy thử từ 1 đến 100 thì chỉ cần chạy từ 1 tới 100/2 = 50 thôi, vì lớn hơn số 50 nó không chia hết được nữa. Việc chạy từ 1 đến x/2 nhằm giảm số lần thực hiện vòng lặp, thay vì lặp 100 lần thì chỉ cần lặp 50 lần là đủ rồi.
bạn nào có thể giúp mình viết các bước giải của code này kh ạ