来源:人民教育出版社 作者:佚名 更新时间:2006-06-01 03:59:05
在国际信息学奥林匹克竞赛中曾经遇到过“水仙花”、“四叶玫瑰”等十分有趣的数。所谓水仙花数又称为阿姆斯特朗数,它是指一个三位数,其各位上数字的三次幂的和仍等于这个三位数,如 。“四叶玫瑰”数是指一个四位数,其各位上的数字的4次幂的和仍等于这个四位数。如。
那么在浩瀚无穷的数字海洋里,有多少个具有类似性质的数呢?即我们能否设一“L”位数的区间[M,N]之内找出具有各个位数上的数字的L次幂的和等于这个L位数这一特征的所有数,例如:
在区间[10000,99999](5位数)之间找出所有满足关系:
的5位数,我们姑且戏称为“五朵金花”数。
现在我们利用计算机编程来查找局部范围内的趣味数字,采用典型的“数字分离法”,即将各个位数上的数字分离出来,再进行处理,具体步骤是;
1.使用函数STR$(X)将所求的L位数X数替换为字符串X$
2.使用函数LTRIM$(X$)去掉字符串X$的左边空格,并求出字符串X$的长度L=LEN(X$).
3.使用内循环I从1到L循环L次,每次对字符串X$进行数字分离,再将结果转换成数值用一数组A(I)存放,即A(I)=VAL(MID$(X$,I1).
4.设计一个累加器S=S+A(I)^L.
5.判断S是否为所寻找的数并打印结果。
现用QBASIC编程如下:
INPUT “please input number [M,N]=”;M,N
K=0
For J=M TO N
X$ =LTRIM $(STR $ (J))
X= VAL(X$)
L=LEN(X$)
REMAIN A(L)
FOR I=1 TO L
A(I)=VAL(MID $(X $,I,1))
S=S*A(2)^L
NEXT I
IF S=X THEN K=K+1
PRINT "The total numbers:"; K
END
当输入100,999则显示:
153 370 371 407
K=4
经过计算机的查找:
“四叶玫瑰”数共有三个,分别是1634 8308 9474
“五朵金花”数也有三个,分别是54748 92727 93084
以此类推可以求出更多类似的趣味数字。
文章评论评论内容只代表网友观点,与本站立场无关!