Kiểm tra số Asmtrong trong C / C++
Trong bài viết này, codehow sẽ hướng dẫn các bạn cách kiểm tra số Armstrong trong C / C++. Đây là một khái niệm khá xa lạ đối với các bạn bắt đầu học ngôn ngữ lập trình đúng không ạ, đừng lo lắng hãy xem ví dụ của nó đã nhé.
Ví dụ: Mình có số 153, khi đem lập phương các chữ số của nó rồi cộng lại sẽ như sau: 13 + 53 + 33 = 1 + 125 + 27 = 153 (bằng chính số đó).
Nếu bắt đầu từ số 0, thì các số Armstrong sẽ là: 0, 1, 2, 3, 153, 370, 407, 1634, ... .
Bây giờ chúng ta bắt đầu viết chương trình kiểm tra số Armstrong trong C / C++ thôi nhé!!!
Kiểm tra số Armstrong trong C / C++
Trước khi đi vào viết chương trình kiểm tra số Armstrong trong C / C++, các bạn hãy cùng với mình xem qua thuật toán của nó đã nhé.
int num,copy_of_num,sum=0,rem; while (num != 0) { rem = num % 10; sum = sum + (rem*rem*rem); num = num / 10; }
Giả sử mình có num là số cần kiểm tra, copy_of_num là một bản sao của biến num (biến này được dùng để so sánh kết quả). Biến rem là các chữ số trong num và biến sum là tổng các chữ số sau khi lập phương.
Sử dụng vòng lặp while để lặp cho đến khi num = 0. Thực hiện phép tính chia lấy dư để phân tách các chữ số trong num, sau đó lập phương nó lên rồi cộng lại.
Ví dụ: Mình sẽ lấy số 153 để chạy thử thuật toán trên nhé.
- Vòng lặp 1
- rem = num % 10 = 153 % 10 = 3.
- sum = sum + (rem * rem * rem) = 0 + (3 * 3 * 3) = 27.
- num = num / 10 = 153 / 10 = 15.
- Vòng lặp 2
- rem = 15 % 10 = 5.
- sum = 27 + (5 * 5 * 5) = 152.
- num = 15 / 10 = 1.
- Vòng lặp 3
- rem = 1 % 10 = 1.
- sum = 152 + (1 * 1 * 1) = 153.
- num = 1 / 10 = 0.
Khi num = 0 thì vòng lặp kết thúc, lúc này ta được sum = 153 (bằng chính số ban đầu), vậy 153 chính là số Armstrong.
Bây giờ sẽ bắt đầu viết chương trình yêu cầu người dùng nhập vào một số, sau đó kiểm tra số đó có phải là số Armstrong không nhé.
Chương trình C:
#include <stdio.h> int main(void) { int num,copy_of_num,sum=0,rem; printf("\nNhập vào một số: "); scanf("%d", &num); copy_of_num = num; while (num != 0) { rem = num % 10; sum = sum + (rem*rem*rem); num = num / 10; } if(copy_of_num == sum) printf("%d là số Armstrong", copy_of_num); else printf("%d không phải là số Armstrong", copy_of_num); printf("\n-------------------------\n"); printf("Chương trình này được đăng tại codehow.net"); return 0; }
Kết quả:
Chương trình C++:
#include <iostream> using namespace std; int main() { int num,copy_of_num,sum=0,rem; cout<<endl<<"Nhập vào một số: "; cin>>num; copy_of_num = num; while (num != 0) { rem = num % 10; sum = sum + (rem*rem*rem); num = num / 10; } if(copy_of_num == sum) cout<<copy_of_num<<" là số Armstrong"; else cout<<copy_of_num<<" không phải là số Armstrong"; cout<<"\n-------------------------\n"; cout<<"Chương trình này được đăng tại codehow.net"; }
Kết quả:
Kiểm tra số Armstrong trong C / C++ sử dụng hàm
Trong chương trình này mình sẽ viết một hàm để kiểm tra số Armstrong trong C / C++. Điều này rất thuận tiện cho việc chúng ta có thể sử dụng lại hàm để kiểm tra ở nhiều chổ khác nhau trong chương trình.
Chương trình C:
#include <stdio.h> void isArmstrong(int num){ int copy_of_num,sum=0,rem; copy_of_num = num; while (num != 0) { rem = num % 10; sum = sum + (rem*rem*rem); num = num / 10; } if(copy_of_num == sum) printf("%d là số Armstrong", copy_of_num); else printf("%d không phải là số Armstrong", copy_of_num); } int main(void) { int num; printf("\nNhập vào một số: "); scanf("%d", &num); isArmstrong(num); printf("\n-------------------------\n"); printf("Chương trình này được đăng tại codehow.net"); return 0; }
Kết quả:
Chương trình C++:
#include <iostream> using namespace std; void isArmstrong(int num){ int copy_of_num,sum=0,rem; copy_of_num = num; while (num != 0) { rem = num % 10; sum = sum + (rem*rem*rem); num = num / 10; } if(copy_of_num == sum) cout<<copy_of_num<<" là số Armstrong"; else cout<<copy_of_num<<" không phải là số Armstrong"; } int main() { int num; cout<<endl<<"Nhập vào một số: "; cin>>num; isArmstrong(num); cout<<"\n-------------------------\n"; cout<<"Chương trình này được đăng tại codehow.net"; }
Kết quả:
Như vậy là chúng ta đã cùng nhau tìm hiểu về số Armstrong là gì? Cách kiểm tra số Armstrong trong C / C++. Các bạn nên luyện tập thật nhiều để rèn tính tư duy logic với các bài toán phức tạp hơn nhé. Trong serries bài tập C / C++ của codehow có rất nhiều dạng bài tập cho các bạn tham khảo, hãy ghé thăm nhé !!!