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ố 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?
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ả:
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ả:
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ả:
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ả:
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ả:
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!!!