例2 用计算机验证角谷猜想。
日本数学家角谷曾提出一个有趣的猜想:从任何一个自然数n出发,如果是偶数,就除以2,如果是奇数,就乘以3再加1,不断重复这个操作,总能得到1。例如,当N=20的时候,有:
20→10→5→16→8→4→2→1。
现在,请你编一个程序,验证角谷猜想。
REM——验证角谷猜想——
INPUT “N=”;N
PRINT N; “—>”;
40 IF N=1 THEN PRINT 1: END
IF N/2=INT(N/2) THEN N=N/2 ELSE
N=3*N+1
IF N>1 THEN PRINT N;”-->”;:GOTO 40
RUN
N=30
30->15->46->23->70->35->106->53->160->
80->40->20->10->5->16->8->4->2->1
例3:验证“回文数猜想”。
左右对称的自然数称为回文数,例如,121,4224,13731等。有一个非常有趣的数学猜想与回文数有关,这就是“回文数猜想”:从任意一个两位或两位以上的自然数开始,将这个数与它的逆序数(如1992的逆序数是2991)相加,得到一个新数,再用这个新数与它的逆序数相加,不断重复上述操作,经过若干步的逆序相加之后,总可以得到一个回文数。例如,从1992开始,经过7步就得到了回文数。
(1) 1992+2991=4983
(2) 4983+3894=8877
(3) 8877+7788=16665
(4) 16665+56661=73326
(5) 73326+62337=135663
(6) 135663+366531=502194
(7) 502194+491205=993399
利用上述方法似乎永远也变不成回文数的最小数目是196。
(1) 196+691=887
(2) 887+788=1675
(3) 1675+5761=7436
(4) 7436+8347=13783
(5) 13783+38731=52514
…………………………
据报道,有人已经对196进行了50000步的逆序相加,仍然未出现回文数,这个数学猜想到目前为止还没有得到证实。现在请你设计一个程序,由计算机在局部范围内验证“回文数猜想”。并将寻找回文数的每一个步骤都显示在屏幕上。
问题分析
这是一个运用高精度加法的典型例题,在寻找回文数的过程中,要不断地进行两个自然数的累加。当累加的数字超过16位时,计算机便不能精确地显示了。因此也就无法再继续验证下去了。为了克服这一缺点,我们可以采用字符串输入的方式,并同时开辟两个数组,将每个数的每一位数字分别存放在两个不同的数组A(I)和B(I)中,A数组中的数与B数组中的数的顺序刚好相反,运算时对位相加即可。当然还要考虑进位问题,相加之后的结果仍然放回到A数组中。
首先,设两个数之和的长度为L,在判断两数之和颜悦色是否为回文数时,只须从I=1开始,到L/2+1为止,将A(I)单元中的数字与A(L-I+1)单元中的数字逐项进行比较,如果每一项都相等,则回文数已经找到了。
因为计算机只能在局部范围内验证这一猜想,所以我们应当确定一个累加次数,当达到这一次数仍未出现回文数时,我们就认为是找到了一个留待进一步考察的特征例。
程序清单
REM——验证回文数猜想——
20 INPUT“n=”;N $
LET L=LEN(N $):IF L<2THEN GOTO 20
DIM A(1000),B(1000)
GOSUB 200
60 GOSUB 300
IF P=1 THEN PRINT “OK! OK=”;END
LET T=0:Z=Z+1:PRINT”(“;Z”)”;
PRINT “ ”;:GOSUB 400:GOSUB 500
LET T=1:GOSUB 400:GOTO 60
200 REM——分离数字子程序——
FOR I=1 TO L
LET A(I)=VAL(MID $(N $,I,1)
LET B(I)=A(I)
NEXT I
RETURN
300 REM——判断是否为回文数子程序——
FOR I=1 TO INT(L/2)+1
IF A(I)<>A(L-I+1)THEN P=0;GOTO 340
NEXT I:P=1
340 RETURN
400 REM ——打印子程序——
FOR I=L TO 1 STEP –1:PRINT B(I);:
NEX T 1
IF T=1 THEN PRINT:RETURN
PRINT“+”;
FOR I=1 TO L:PRINT A(I);:NEXT 1
PRINT“=”;RETURN
500 REM——逆序相加子程序——
LET D=0
FOR I=1 TO L
LET B(I)=B(I)+A(L-I+1)+D
LET D=INT(B(I)/10)
LET B(I)=B(I)-10*D
NEXT I
IF D=1 THEN L=L+1:B(L)=1
FOR I=1TO L:A(I)=B(I):NEXT I
RETURN
运行结果举例
RUN
n=? 1999
(1)9991+1999=11990
(2)11990+09911=21901
(3)21901+10912=32813
(4)32813+31823=64636
(5)64636+63646=128282
(6)128282+282821=411103
(7)411103+301114=712217
OK! OK!
通过上面的举例,相信读者对用计算机验证数学猜想已经有了一些认识。下面,作为练
习,我们再给出一个数学猜想,请读者自己编制程序来验证该猜想的正确性。
验证卡布列卡猜想
印度数学家卡布列卡在研究数学问题时发现一个有趣的现象:用不完全相同的四个数字组成一个四位数,将组成这个四位数的四个数字重新排序,组成一个最大的数和一个最小的数,并用较大的数减去较小的数,对减得的差再重复上述操作,差如果不够四位数时,用零补位。不断地做下去,最后变成了一个固定不变的数:6174。卡布列卡普做过大量的试验,结果不论从任何满足条件的四位数开始,最后总能变成6174。因此,卡布列卡风趣地把6174叫做卡布列卡常数。
例如,我们从4231开始,首先把4231重新排列成4321和1234,两数相减得3087;再把3087重新排列成8730和0378,两数相减得8382;再把8352重新排列成8532和2358,相减得6174;再把6174重新排列成7641和1467,两数相减仍然得6174。
4231:4231-1234=3087
3087:8730-0378=8352;
8352:8532-2358=6174;
6174:7941-1467=6174。
请你设计一个程序,验证卡布列卡猜想。并把验证猜想的每一步结果打印出来。
(选自《中学生数学》期刊 2001年11月(上))
高中各年级课程推荐
|
||||
年级
|
学期
|
课程名称
|
课程试听
|
|
高一 |
高一(上)、(下)同步复习
|
语文 | ||
英语 | ||||
数学 | ||||
数学(期中串讲) | ||||
数学(期末串讲) | ||||
数学拔高 | ||||
物理 | ||||
化学 | ||||
生物(一) | ||||
地理 | ||||
历史 | ||||
政治 | ||||
高中专项突破课
|
语文写作 | |||
英语阅读理解 | ||||
英语写作 | ||||
英语完形填空 | ||||
物理功和能量 | ||||
高二 |
高二(上)、(下)同步复习
|
语文 | ||
英语 | ||||
数学(理) | ||||
数学拔高(理) | ||||
数学(文) | ||||
数学拔高(文) | ||||
物理 | ||||
数学(期中串讲) | ||||
数学(期末串讲)(理) | ||||
数学(期末串讲)(文) | ||||
化学 | ||||
生物(一) | ||||
生物(二) | ||||
生物(三) | ||||
地理 | ||||
历史 | ||||
政治 | ||||
高三 |
高考第一轮复习
|
语文 | ||
英语 | ||||
数学(理) | ||||
数学拔高(理) | ||||
数学(文) | ||||
数学拔高(文) | ||||
物理 | ||||
物理拔高 | ||||
化学 | ||||
生物 | ||||
地理 | ||||
政治 | ||||
历史(韩校版) | ||||
历史(李晓风版) | ||||
高考第二轮复习
|
数学(理) | |||
数学(文) | ||||
英语 | ||||
物理 | ||||
化学 | ||||
地理 | ||||
高考第三轮冲刺串讲
|
语数英串讲(理) | |||
语数英串讲(文) | ||||
物化生串讲 | ||||
史地政串讲 | ||||
高考试题精讲
|
数学(理) | |||
英语 | ||||
化学 | ||||
物理 | ||||
2021高考研究2021高考策略(理) | ||||
2021高考研究2021高考策略(文) | ||||
Copyright © 2005-2020 Ttshopping.Net. All Rights Reserved . |
云南省公安厅:53010303502006 滇ICP备16003680号-9
本网大部分资源来源于会员上传,除本网组织的资源外,版权归原作者所有,如有侵犯版权,请立刻和本网联系并提供证据,本网将在三个工作日内改正。