回文数是正序与倒序读取完全相同的整数,例如121、1331等,具有对称性和多样性特征,在数学、计算机科学领域有重要应用。
1.核心定义与数学特征
回文数的数学定义为:若自然数n与其各位数字反向排列所得数n1 相等,则n为回文数。
例如12321满足n=12321,n1=12321,故为回文数。
2.其核心特征包括:
对称性:数字序列镜像对称,如123454321。
非负性:仅限正整数范围。
整除性:四位及以上回文数均可被11整除。
3.生成公式与典型算式
回文数的生成可通过以下三种主要方法实现:
3.1 反转相加法:任意数与倒序数反复相加,例如
28+82=110,110+011=121
3.2 对称构造法:
三位数构造公式:101a+10b+a(如a=1,b=2生成121)。
四位数构造公式:1000a+100b+10b+a(如a=1,b=2生成1221)。
3.3 回文算式:满足a×b=b倒×a倒 的特殊等式,例如:
12×42=24×21
12×462=264×21
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
//
bool huiwenNum(int n) {
// 方法1 数字转字符串,前后字符串是否相等
/*
// 1
char *str = malloc(sizeof(char) * 5);
sprintf(str, "%d", n);
// 2
int len = strlen(str);
int left = 0;
int right = len - 1;
// 3
while (left < right) {
int chLeft = str[left];
int chRight = str[right];
if (chLeft != chRight) {
return false;
break;
}
left++;
right--;
}
*/
// 方法2 数字反转,反转后是否相等
int numOrigin = n;
int numReverse = 0;
while (n != 0) {
int tmp = n % 10;
numReverse = numReverse * 10 + tmp;
n = n / 10;
}
if (numOrigin != numReverse) {
return false;
}
return true;
}
int main()
{
int n = 12456;
printf("%d%s", n,(huiwenNum(n) ? "是回文数" : "不是回文数"));
return 0;
}
12456不是回文数
12421是回文数