编程算法实例-回文数

发布于:2025-08-18 ⋅ 阅读:(13) ⋅ 点赞:(0)

‌回文数是正序与倒序读取完全相同的整数‌,例如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是回文数


网站公告

今日签到

点亮在社区的每一天
去签到