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:

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