10000内的回文数c语言,回文数
“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。[1]
设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。[1]
注意:
1.偶数个的数字也有回文数124421
2.小数没有回文数
中文名
回文数外文名
palindrome number
定 义
正读倒读都一样的整数
回文数基本情况
回文数1千以内的回文数
在自然数中,最小的回文数是0,其次是1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77,88,99,101,111,121,131,141,151,161,171,181,191,202,212,222,232,242,252,262,272,282,292,303,313,323,333,343,353,363,373,383,393,404,414,424,434,444,454,464,474,484,494,505,515,525,535,545,555,565,575,585,595,606,616,626,636,646,656,666,676,686,696,707,717,727,737,747,757,767,777,787,797,808,818,828,838,848,858,868,878,888,898,909,919,929,939,949,959,969,979,989,999.
回文数平方回数
定义:一个回文数,它同时还是某一个数的平方,这样的数字叫做平方回数。例如:121。
100以上至1000以内的平方回数只有3个,分别是:121、484、676。
其中,121是11的平方。
484是22的平方,同时还是121的4倍。
676是26的平方,同时还是169的4倍。
回文数举例说明
任意某一个数通过以下方式相加也可得到
如:29+92=121 还有 194+491=685,586+685=1271,1271+1721=2992
不过很多数还没有发现此类特征(比如196,下面会讲到)
另外个别平方数是回文数
1的平方=1
11的平方=121
111的平方=12321
1111的平方=1234321
……
……
依次类推
3×51=153
6×21=126
4307×62=267034
9×7×533=33579
上面这些算式,等号左边是两个(或三个)因数相乘,右边是它们的乘积。如果把每个算式中的“×”和“=”去掉,那么,它们都变成回文数,所以,我们不妨把这些算式叫做“回文算式”。还有一些回文算式,等号两边各有两个因数。请看:
12×42=24×21
34×86=68×43
102×402=204×201
1012×4202=2024×2101
不知你是否注意到,如果分别把上面的回文算式等号两边的因数交换位置,得到的仍是一个回文算式,比如:分别把“12×42=24×21”等号两边的因数交换位置,得到算式是:
42×12=21×24
这仍是一个回文算式。
还有更奇妙的回文算式,请看:
12×231=132×21(积是2772)
12×4032=2304×21(积是48384)
这种回文算式,连乘积都是回文数。
四位的回文数有一个特点,就是它决不会是一个质数。设它为abba,那它等于a*1000+b*100+b*10+a,1001a+110b。能被11整除。
六位的也一样,也能被11整除
还有,人们借助电子计算机发现,在完全平方数、完全立方数中的回文数,其比例要比一般自然数中回文数所占的比例大得多。例如11^2=121,22^2=484,7^3=343,11^3=1331,11^4=14641……都是回文数。
回文数研究现状
人们迄今未能找到自然数(除0和1)的五次方,以及更高次幂的回文数。于是数学家们猜想:不存在n^k(n≥2,k≥5;n、k均是自然数)形式的回文数。
在电子计算器的实践中,还发现了一桩趣事:任何一个自然数与它的倒序数相加,所得的和再与和的倒序数相加,……如此反复进行下去,经过有限次步骤后,最后必定能得到一个回文数。
这也仅仅是个猜想,因为有些数并不“驯服”。比如说196这个数,按照上述变换规则重复了数十万次,仍未得到回文数。但是人们既不能肯定运算下去永远得不到回文数,也不知道需要再运算多少步才能最终得到回文数。
回文数回文数算法
随意找一个十进制的数,把它倒过来成另一个数,再把这两个数相加,得一个和数,这是第一步;然后把这个和数倒过来,与原来的和数相加,又得到一个新的和数,这是第二步。照此方法,一步步接续往下算,直到出现一个“回文数”为n。例如:28+82=110,110+011=121,两步就得出了一个“回文数”。如果接着算下去,还会得到更多的“回文数”。这个过程称为“196算法”。[2]
回文数对回文数的探索过程
上而提到的196这个数,是第一个可能的“利克瑞尔数”,因而它受到了最多的关注。由于还不可能证明一个数永远不能形成“回文数”,所以“196和其他那些(看起来)不能形成回文数的数是利克瑞尔数”这一命题仅是猜想而非已获证明。能证明的仅是那些反例,即如果一个数最终能形成“回文数”,则它不是“利克瑞尔数”。
在电子计算机尚未问世的1938年,美国数学家莱默(D. Lehmer,1905-1991)计算到了第73步,得到了一个没有形成“回文数”的35位的和数。至今挑战此题的数学爱好者从没有间断过,并随着计算机科技的发展,不断有发烧友编写不同的程序对此题发起挑战。据笔者最新调查,领军人W.V.Landingham到2006年2月已经计算到了699万步,得到了一个2.89亿位以上的和数,之间的结果仍未出现“回文数”。
另外介绍一个关于达到“回文数”需要计算步数的世界记录。它是一个19位数字1,186,060,307,891,929,990,算出“回文数,,需要了261步。它是由Jason Doucette的算法及程序于2005年11月30日发现的。下表列举的是各位数字中,到达“回文数”花费步数最多的代表性数字。[2]
回文数编程实现
回文数JAVA源程序
publicclassPlalindrome{
publicstaticvoidmain(String[]args){
System.out.println("11is"+(isPlalindrome(11)?"":"not")+"Plalindromenumber");
System.out.println("123is"+(isPlalindrome(123)?"":"not")+"Plalindromenumber");
System.out.println("17251is"+(isPlalindrome(17251)?"":"not")+"Plalindromenumber");
System.out.println("2882is"+(isPlalindrome(2882)?"":"not")+"Plalindromenumber");
}
publicstaticbooleanisPlalindrome(intnumber){
//此方法实现判断数字是不是回文数
Stringnum=String.valueOf(number);
returnnewStringBuffer(num).reverse().toString().equalsIgnoreCase(num);
}
}
---------------
11 is Plalindrome number
123 is not Plalindrome number
17251 is not Plalindrome number
2882 is Plalindrome number
回文数用visual basic6.0
for i = 100 to 99999 '这里从100开始 后面可以随便填,我这里填99999 表示所有3位数到五位数之间的回文数
if StrReverse(i)=i then print i '用StrReverse函数 判断倒序后的数和原来数是否相同,如果相同者表示此数为回文数
next
回文数用C语言编程
#include
intx,y;
separate(int*data,intn)
{
inti,j;
y=0;
while(n!=0)
{
*(data+y)=n%10;n=n/10;y++;
}
*(data+y)='\0';
for(i=0,j=y-1;i<=j;i++,j--)
{
if(*(data+i)!=*(data+j)){
printf("%d不是回文!!!\n",x);break;
}
}
if(i ==y-1) printf("是回文数");
}
voidmain()
{
inta[99];
printf("请输入一个正整数:");
scanf("%d",&x);
separate(a,x);
}
另外一种实现方法(c++)更简便
#include
using namespace std;
bool symm(long m)
{
long temp = m,n=0;
while (temp)
{
n = n*10+temp%10;
temp = temp/10;
}
return (m == n);
}
int main(int argc, _TCHAR* argv[])
{
long m;
cout<
cin>>m;
cout<
return 0;
}
回文数python源程序
#coding:--utf-8-- #-*-coding:cp936-*-
classHws: def__init__(self): self.result=[] defhWs(self): forainrange(1,10000): b=str(a) foriinrange(0,len(b)/2+1): ifb[i]==b[len(b)-i-1]: self.result.append(a) printself.result hws=Hws() hws.hWs()
回文数求最长回文数长度的manacher算法(O(n))
#include
#include
#include
#include
#include
#include
#include
#include
#include
#defineINF99999999
usingnamespacestd;
constintMAX=110000+10;
chars[MAX*2];
intp[MAX*2];
intmain(){
while(scanf("%s",s)!=EOF){
intlen=strlen(s),id=0,maxlen=0;
for(inti=len;i>=0;--i){//插入'#'
s[i+i+2]=s[i];
s[i+i+1]='#';
}//插入了len+1个'#',最终的s长度是1~len+len+1即2*len+1,首尾s[0]和s[2*len+2]要插入不同的字符
s[0]='*';//s[0]='*',s[len+len+2]='\0',防止在while时p[i]越界
for(inti=2;i<2*len+1;++i){
if(p[id]+id>i)p[i]=min(p[2*id-i],p[id]+id-i);
elsep[i]=1;
while(s[i-p[i]]==s[i+p[i]])++p[i];
if(id+p[id]
if(maxlen
}
cout<
}
return0;
}参考资料
1.
回文数猜想的验证
.中国知网.2001.1[引用日期2015-02-03]
2.
关于“回文数”和“数黑洞”的初探
.中国知网.2014.1[引用日期2015-02-03]
10000内的回文数c语言,回文数相关推荐
- 寻找雷劈数c语言,求雷劈数的来历。
雷劈数 有位外国数学家叫卡普利加,在一次旅行中,遇到猛烈的暴风雨,电闪雷鸣过后,他看到路边一块里程碑,被雷电劈成两半,一半上刻著30,另一半刻著25.这时,卡普利加的脑际中忽然发现了一个绝妙的数学关系 ...
- 基础练习 回形取数 C语言 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度.一开始位于矩阵左上角,方向向下. 输入格式 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列.接下来m ...
- c语言200-500完数,C语言求完数(完全数)(详解版)
问题描述 求某一范围内完数的个数. 如果一个数等于它的因子之和,则称该数为"完数"(或"完全数").例如,6的因子为1.2.3,而 6=1+2+3,因此6是&q ...
- c语言程序设计对称数,c语言程序设计--对称数
匿名用户 1级 2014-11-18 回答 #include #include #include intmain() { charstr[10]={0}; inta,b,num,i,j; gets(s ...
- 问题 W: 3.16回文数 五位数中,对称的数称为回文数,如:12321,输入数据n(n>10000),计算10000-n之间所有的回文数的个数。
问题 W: 3.16回文数 时间限制: 1 Sec 内存限制: 128 MB 提交: 4389 解决: 2683 [提交] [状态] [讨论版] [命题人:tianhl] 题目描述 五位数中,对称的数 ...
- c语言编程回文数用数组,【C语言程序设计】C语言回文数怎么求?
问题描述 打印所有不超过n(取n<256)的其平方具有对称性质的数(也称回文数). 问题分析 对于要判定的数n计算出其平方后(存于a),按照"回文数"的定义要将最高位与最低位 ...
- 用c语言求五位回文数,C语言求回文数(详解版)
问题描述 打印所有不超过n(取n<256)的其平方具有对称性质的数(也称回文数). 问题分析 对于要判定的数n计算出其平方后(存于a),按照"回文数"的定义要将最高位与最低位 ...
- 五位数回文数c语言程序,五位数的回文数有多少个
2018-12-16 数学中有哪些回文数? 简介折叠编辑本段回文数是指一个像16461这样"对称"的数,即:将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样.这里,& ...
- c语言编写函数求回文数,C语言求回文数(详解版)
问题描述 打印所有不超过n(取n<256)的其平方具有对称性质的数(也称回文数). 问题分析 对于要判定的数n计算出其平方后(存于a),按照"回文数"的定义要将最高位与最低位 ...
最新文章
- python字典键值可以是元组吗_python元组与字典
- 老股民经验之谈 这些股票买入必死无疑
- 【iMX6ULL】触觉 imx6ull开发板交叉编译环境搭建
- 【Python自动化运维之路Day2】
- Ubuntu16.04 + caffe-ssd + [CPU_ONLY] + KITTI 训练总结
- pycharm-设快捷代码热键
- No migrations to apply.(django不能创建数据库中的表的问题)makemigrations/migrate
- 渗透测试入门23之OSCP渗透测试认证经验分享
- 同时启动多个Tomcat服务器
- 100 个网络基础知识 看完成半个网络高手
- 反编译工具Reflector下载(转)
- Unity内嵌浏览器插件(Android、iOS、Windows)
- 一个月10起融资,宠物经济正在掏空年轻人的钱包
- Centos7配置软RAID+LVM
- 现实中的软件工程:如何快速迭代代码
- java实现 蓝桥杯 算法提高 盾神与条状项链
- 浅析基于二维轮廓线重构表面算法
- 汇编:寄存器的寻址方式
- 南京技师学院计算机系,江苏南京技师学院
- c语言sinf函数,sinf_数值 | Numerics_C_参考手册_非常教程