LATEST

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é.

Số Armstrong là một số bằng tổng lập phương các chữ số trong số đó. Nghĩa là đem các chữ số trong số đó lập phương lên thì sẽ bằng chính nó.

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ả:

bai7 01 png

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ả:

bai7 02 png

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ả:

bai7 03 png

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ả:

bai7 04 png

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é !!!

Cùng chuyên mục:

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán tính lũy thừa trong C / C++

Thuật toán tính lũy thừa trong C / C++

Top