判断数字n在sn进制下是不是回文数
“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。
步骤如下:
1、键入要判断的数字n和进制数sn;
2、在sn进制下取出每一位的数字tmp;**for (i = n; i; i /= sn) { i%sn; }**采用取数位的固定模板;
3、实现对新数字sum的逆序重排;**tmp = i%sn;sum = sum*sn + tmp;**采用迭代法原理;
4、判断新数字sum与键入数字n是否相等,打印结果 n是否为回文数。
具体代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int i;
int n, sn;
int tmp, sum = 0;
printf("请输入一个sn进制的数字n\n");
scanf("%d %d", &sn, &n);
for (i = n; i; i /= sn) {
tmp = i%sn;
sum = sum*sn + tmp;
}
if (sum == n) {
printf("%d在%d进制下是回文数\n", n, sn);
}
else {
printf("%d在%d进制下 不是回文数\n", n, sn);
}
system("pause");
return 0;
}