Bài viết này sẽ hướng dẫn bạn cách kiểm tra một số nguyên có phải là số đối xứng hay không. Chúng ta sẽ đi từ định nghĩa cơ bản, thuật toán, code tham khảo (C++, C#, Python) và những lưu ý quan trọng.
Mục Lục
Số Đối Xứng Là Gì?
Số đối xứng (Palindrome number) là số khi đọc từ trái sang phải hoặc từ phải sang trái đều cho ra cùng một giá trị.
Ví dụ: 11, 121, 12321, 5005 là các số đối xứng. 123, 1234 thì không phải.
Thuật Toán Kiểm Tra Số Đối Xứng
Để kiểm tra một số có phải là số đối xứng, chúng ta có thể sử dụng thuật toán sau:
- Tìm số đảo ngược: Tạo một bản sao của số ban đầu và đảo ngược nó.
- So sánh: So sánh số đảo ngược với số ban đầu.
- Kết luận: Nếu hai số bằng nhau, số ban đầu là số đối xứng.
Code Tham Khảo (C++)
#include <iostream>
using namespace std;
// Hàm tìm số đảo ngược của một số nguyên
int timSoDao(int n) {
int soDao = 0;
while (n > 0) {
int chuSoCuoi = n % 10;
soDao = soDao * 10 + chuSoCuoi;
n /= 10;
}
return soDao;
}
// Hàm kiểm tra số đối xứng
bool laSoDoiXung(int n) {
return (n == timSoDao(n));
}
int main() {
int nInput;
cout << "Nhap mot so nguyen: ";
cin >> nInput;
if (laSoDoiXung(nInput)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
Giải thích code:
- Hàm
timSoDao(int n)
: Tìm số đảo ngược của sốn
. - Hàm
laSoDoiXung(int n)
: Kiểm tra xemn
có phải là số đối xứng không bằng cách so sánhn
với số đảo ngược của nó. main()
: Nhận đầu vào từ người dùng, gọi hàmlaSoDoiXung()
và in kết quả.
Code Tham Khảo (C#)
using System;
namespace SoDoiXung
{
class Program
{
static void Main(string[] args)
{
Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.Write("Mời bạn nhập số: ");
string str1 = Console.ReadLine();
int _soDau = Convert.ToInt32(str1);
int SoDAu = _soDau;
int soDao = 0;
while (_soDau != 0)
{
int x = _soDau % 10;
_soDau = _soDau / 10;
soDao = (soDao * 10) + x;
}
if (soDao == SoDAu)
{
Console.WriteLine("Đấy là số đối xứng!");
}
else
{
Console.WriteLine("Đây không phải là số đối xứng!");
}
Console.ReadLine();
}
}
}
Giải thích code:
- Chương trình sử dụng
Console.ReadLine()
để nhận dữ liệu nhập vào từ người dùng dưới dạng chuỗi. Convert.ToInt32()
chuyển đổi chuỗi vừa nhập thành số nguyên.- Vòng lặp
while
được sử dụng để đảo ngược số. - Cuối cùng, số đảo ngược được so sánh với số ban đầu để xác định xem đó có phải là số đối xứng hay không.
Code Tham Khảo (Python)
def sodoixung(_n):
_rev = 0
_rem = 0
while _n>0:
_rem = _n % 10
_rev = _rev*10 + _rem
_n = _n // 10
return _rev
def kiemtradoixung(_n):
if _n == sodoixung(_n):
print("Đấy là số đối xứng")
else:
print("Đây không là số đối xứng")
kiemtradoixung(12321)
Giải thích code:
- Hàm
sodoixung(_n)
: Đảo ngược số_n
bằng cách lấy từng chữ số cuối cùng và xây dựng số đảo ngược. - Hàm
kiemtradoixung(_n)
: Kiểm tra xem số_n
có bằng số đảo ngược của nó hay không, và in ra kết quả tương ứng.
Lưu Ý Quan Trọng
- Số âm: Thuật toán trên có thể không hoạt động đúng với số âm. Để xử lý số âm, bạn có thể bỏ dấu âm trước khi kiểm tra và thêm lại sau nếu cần.
- Số 0: Số 0 được coi là số đối xứng.
- Hiệu suất: Với các số rất lớn, việc chuyển đổi thành chuỗi và so sánh có thể hiệu quả hơn về mặt hiệu suất.
Kết luận
Bài viết này đã cung cấp một hướng dẫn chi tiết về cách kiểm tra số đối xứng, bao gồm định nghĩa, thuật toán và code tham khảo bằng nhiều ngôn ngữ lập trình khác nhau. Hy vọng bạn có thể áp dụng kiến thức này vào các bài toán thực tế.