Khái niệm số hoàn hảo
Mình sẽ nói về khái niệm số hoàn hảo trước nhé. Trước tiên, bạn hãy xem ví dụ sau:
- Số 6 là một số hoàn hảo vì tổng các ước số thật sự của số 6 là: 1 + 2 + 3 = 6 (tức là bằng chính nó)
- Số 12 không phải là một số hoàn hảo vì tổng các ước số thực sự của số 12 là: 1 + 2 + 3 + 4 + 6 = 16 (khác với chính nó)
Trong ví dụ trên có khái niệm ước số. Vậy ước số là gì? Giả sử có hai số a và b, nếu a chia hết cho b thì b được gọi là ước số của a. Ước số thật sự là ước số không bao gồm chính nó. Ví dụ:
- Các ước số của số 6 bao gồm: 1, 2, 3 và 6. Vậy, ước số thật sự của số 6 bao gồm: 1, 2, 3.
Từ đó, mình đi đến khái niệm số hoàn hảo
là một số mà tổng
các ước số thật sự
bằng chính nó. Đến đây chắc bạn đã hiểu.
Viết chương trình kiểm tra số hoàn hảo
- Đầu tiên ta tìm các ước số thật sự của số a
- Ta dùng một biến
sum
tính tổng các ước số thật sự của a - Kiểm tra nếu
sum == a
thì a chính là số hoàn hảo - Lưu ý: các ước số thật sự của a luôn bé hơn hoặc bằng a/2. Các bạn dùng điều kiện này để giới hạn vòng for lại.
Code C
#include<stdio.h> bool check(int n){ int sum = 0;//khai bao biem sum for(int i=1;i<=n/2;i++){ if(n%i==0) sum+=i; } if(sum==n) return true; // tra ve true return false; } int main(){ int n; printf("Nhap n: "); scanf("%d",&n); if(check(n) ) printf("%d la so hoan hao.",n); else printf("%d khong phai la so hoan hao.",n); return 0; }
Kết quả sau khi chạy
Nhap n: 6 6 la so hoan hao.
Code C++
#include<iostream> using namespace std; bool check(int n){ int sum = 0;//khai bao biem sum for(int i=1;i<=n/2;i++){ if(n%i==0) sum+=i; } if(sum==n) return true; // tra ve true return false; } int main(){ int n; cout<<"Nhap n: "; cin>>n; if(check(n) ) cout<<n<<" la so hoan hao."; else cout<<n<<" khong la so hoan hao."; return 0; }
Kết quả sau khi chạy
Nhap n: 12 12 khong la so hoan hao.
Bài viết mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !
Để lại một bình luận