Thuật toán kiểm tra số tự mãn sử dụng C/C++
Hôm nay chúng ta sẽ đi tìm hiểu về số tự mãn, cách để kiểm tra, tìm ra một số tự mạn. Đầu tiên ta cần phải biết được số tự mãn là số như nào.
Trong lý thuyết toán học, số tự mãn (Narcissistic Number) có nhiểu cách định nghĩa. Theo Wikipedia thì ta có thể hiểu như sau:
Số tự mãn là số có tổng từng chữ số mũ k bằng chính nó, với k bằng chính số chữ số. Lúc này nó có tên gọi khác là số tự hảo bất biến (PPDI - Perfect and PluPerfect Digital Invariants).
153=13+53+33
370=33+73+03
371=33+73+13
407=43+03+73
Đây cũng là định nghĩa đơn giản và thường thấy nhất về con số đặc biệt này.
Thuật toán kiểm tra số tự mãn
Phương hướng xử lý bài toán này như sau:
Phương hướng xử lý bài toán này như sau:
- Đếm số chữ số của số nguyên n có k chữ số được nhập vào.
- Tách các chữ số ra thành các phần riêng biệt.
- Tính tổng các số chữ số mũ k vừa tách được.
- So sánh với số nguyên n ban đầu.
Đối với hàm tính lũy thừa ta có thể sử dụng hàm pow có sẵn trong thư viện math.h nhưng ta lại phải sử dụng tới kiểu double. Ở đây tôi chỉ cần tới kiểu số nguyên int nên tôi tự xây dựng lại hàm này
Tôi tách các chữ số ra theo các này:- Dựa vào tính chất 153=100+5x10+3
- Chia 153 cho 10 ta được 15 dư 3 (hàng đơn vị).
- Chia 15 cho 10 ta được 1 dư 5 (hàng chục).
- Chia 1 cho 10 được 0 dư 1 (hàng trăm) => Dừng.

Nhận xét
Đăng nhận xét