LATEST

Số Polindrom trong C / C++

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ố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("%d\n", 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!!!

Cùng chuyên mục:

Xóa node khỏi cây nhị phân tìm kiếm

Xóa node khỏi cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cách gộp hai danh sách liên kết đôi

Cách gộp hai danh sách liên kết đôi

Tìm kiếm phần tử trong DSLK đôi

Tìm kiếm phần tử trong DSLK đôi

Xóa node trong DSLK đôi

Xóa node trong DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Duyệt danh sách liên kết đôi

Duyệt danh sách liên kết đôi

Tạo node mới trong DSLK đôi

Tạo node mới trong DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

Quản lý sinh viên bằng DSLK đơn

Quản lý sinh viên bằng DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Tạo node mới trong DSLK đơn

Tạo node mới trong DSLK đơn

Cấu trúc dữ liệu của DSLK đơn

Cấu trúc dữ liệu của DSLK đơn