Trong bài viết này, codehow sẽ hướng dẫn các bạn cách tìm số Polindrom trong C / C++. Đây là một khái niệm khá lạ đúng không, đừng vội lo lắng mà hãy cùng mình tìm hiểu nó thôi nào.

Ở hai bài viết trước mình đã hướng dẫn các bạn số nguyên tố và số đối xứng trong C / C++ rồi đúng không ạ. Vậy số Polindrom trong C / C++ có liên quan gì đến hay số này?

Số Polindrom trong C / C++ là một số vừa là số nguyên tố, vừa là số đối xứng.

Ví dụ: Số 151 là số Polindrom vì nó vừa là số đối xứng, vừa là số nguyên tố.

Vậy làm thế nào để có thể kết hợp hai điều kiện này để viết thành một chương trình kiểm tra số Polindrom trong C / C++, hãy bắt đầu thôi nào!!!

Kiểm tra số Polindrom trong C / C++

Trước khi viết chương trình kiểm tra số Polindrom trong C / C++, hãy cùng mình xem qua thuật toán của nó đã nhé.

int num, rem, reverse_num, temp;
temp=num;
reverse_num=0;
while(temp){
    rem=temp%10;
    temp=temp/10;
    reverse_num=reverse_num*10+rem;
}

Giải thích thuật toán:

Mình có biến num là số cần kiểm tra, biến temp là một bản sao của biến num (được dùng để tính toán thay thế cho biến num). Biến rem là biến lưu giá trị của temp sau mỗi vòng lặp, biến reverse_num là kết quả cuối cùng.

Giả sử mình có số 151, khi đó thuật toán sẽ chạy như sau:

  • Vòng lặp 1
    • rem = temp % 10 = 151 % 10 = 1.
    • temp = temp / 10 = 15.
    • reverse_num = reverse_num * 10 + rem = 0 * 10 + 1 = 1.
  • Vòng lặp 2
    • rem = 15 % 10 = 5.
    • temp = 15 / 10 = 1.
    • reverse_num = 1 * 10 + 5 = 15.
  • Vòng lặp 3
    • rem = 1 % 10 = 1.
    • temp = 1 / 10 = 0.
    • reverse_num = 15 * 10 + 1 = 151.

Khi này temp = 0 nên vòng lặp sẽ kết thúc. Lúc này ta được kết quả reverse_num = num = 151. Đây là số đối xứng và nó cũng là số nguyên tốt, vậy nên đây là số Polindrom.

Chương trình C:

#include <stdio.h>

int main(void) {
  int num, rem, reverse_num, temp;
  printf("Nhập vào số cần kiểm tra: ");
  scanf("%d", &num);
  temp=num;
  reverse_num=0;
  while(temp){
    rem=temp%10;
    temp=temp/10;
    reverse_num=reverse_num*10+rem;
  }
  if(num==reverse_num)
    printf("%d là số Polindrom.n", num);
  else
    printf("%d không phải là số Polindrom.n", num);
  
   printf("n-------------------------n");
   printf("Chương trình này được đăng tại codehow.net");
   return 0;
}

Kết quả:

bai9 01 png

Chương trình C++:

#include <iostream>
using namespace std;
int main(){
  int num, rem, reverse_num, temp;
  cout<<"Nhập vào số cần kiểm tra: ";
  cin>>num;
  temp=num;
  reverse_num=0;
  while(temp){
    rem=temp%10;
    temp=temp/10;
    reverse_num=reverse_num*10+rem;
  }
  if(num==reverse_num)
    cout<<num<<" là số Polindrom."<<endl;
  else
    cout<<num<<" không phải là số Polindrom."<<endl;

  cout<<"n----------------------------n";
  cout<<"Chương trình này được đăng tại codehow.net";
}

Kết quả:

bai9 02 png

Kiểm tra số Polindrom trong C / C++ sử dụng hàm

Trong chương trình này mình sẽ tạo một hàm kiểm tra số Polindrom trong C / C++, điều này sẽ rất thuận tiện cho việc tái sử dụng hàm trong chương trình.

Chương trình C:

#include <stdio.h>

void isPolindrom(int num){
  int rem, reverse_num, temp;
  temp=num;
  reverse_num=0;
  while(temp){
    rem=temp%10;
    temp=temp/10;
    reverse_num=reverse_num*10+rem;
  }
  if(num==reverse_num)
    printf("%d là số Polindrom.n", num);
  else
    printf("%d không phải là số Polindrom.n", num);
}

int main(void) {
  int num;
  printf("Nhập vào số cần kiểm tra: ");
  scanf("%d", &num);
  isPolindrom(num);
  
  printf("n-------------------------n");
  printf("Chương trình này được đăng tại codehow.net");
   return 0;
}

Kết quả:

bai9 03 png

Chương trình C++:

#include <iostream>
using namespace std;

void isPolindrom(int num){
  int rem, reverse_num, temp;
  temp=num;
  reverse_num=0;
  while(temp){
    rem=temp%10;
    temp=temp/10;
    reverse_num=reverse_num*10+rem;
  }
  if(num==reverse_num)
    cout<<num<<" là số Polindrom."<<endl;
  else
    cout<<num<<" không phải là số Polindrom."<<endl;
}

int main(){
  int num;
  cout<<"Nhập vào số cần kiểm tra: ";
  cin>>num;
  isPolindrom(num);
  cout<<"n----------------------------n";
  cout<<"Chương trình này được đăng tại codehow.net";
}

Kết quả:

bai9 04 png

In các số Polindrom trong C / C++ tại một phạm vi nhất định

Trong chương trình này, mình sẽ yêu cầu người dùng nhập vào hai số bắt đầu và kết thúc. Hiển thị tất cả các số Polindrom trong phạm vi này ra mành hình.

Chương trình C:

#include <stdio.h>

int main(void) {
  int num, rem, reverse_num, temp, start, end;
   printf("Nhập vào số bắt đầu: ");
   scanf("%d",&start);
   printf("Nhập vào số kết thúc: ");
   scanf("%d",&end);
   printf("Các số Palindrom trong khoảng từ %d đến %d là: n", start, end);
   for(num=start;num<=end;num++){
      temp=num;
      reverse_num=0;
      while(temp){
         rem=temp%10;
         temp=temp/10;
         reverse_num=reverse_num*10+rem;
      }
      if(num==reverse_num)
         printf("%dn", num);
   }
  
  printf("n-------------------------n");
  printf("Chương trình này được đăng tại codehow.net");
   return 0;
}

Chương trình C++:

#include <iostream>
using namespace std;
int main(){
   int num, rem, reverse_num, temp, start, end;
   cout<<"Nhập vào số bắt đầu: ";
   cin>>start;
   cout<<"Nhập vào số kết thúc: ";
   cin>>end;
   cout<<"Các số Palindrom trong khoảng từ "<<start<<" đến "<<end<<" là: n";
   for(num=start;num<=end;num++){
      temp=num;
      reverse_num=0;
      while(temp){
         rem=temp%10;
         temp=temp/10;
         reverse_num=reverse_num*10+rem;
      }
      if(num==reverse_num)
         cout<<num<<endl;
   }
   cout<<"n----------------------------n";
   cout<<"Chương trình này được đăng tại Freetuts.net";
}

Kết quả:

bai9 05 png

Như vậy là chúng ta đã cùng nhau tìm hiểu về số Polindrom trong C / C++, cũng như cách kiểm tra số Polindrom. Trong serries bài tập C / C++ codehow có rất nhiều dạng bài tập, các bạn có thể tham khảo nhé. Cảm ơn các bạn rất nhiều!!!

Đánh Giá post
Mục nhập này đã được đăng trong C/C++. Đánh dấu trang permalink.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *