用数字分离法实现查找“水仙花”数

有一个数字:153,要验证它是不是水仙花数,还可以用数学计算的方法将一百五十三153这个三位数的百位、十位、个位数字分别分离出来,再计算它们的立方和……百位是这样计算的:153÷100=1.53,LOGO语言中有一个INT“向下取整数”函数,INT(1.53)→1,这样百位数就分离出来了。153-1×100=53,现在得到的是后面的两位数。INT(53/10)=INT(5.3)→5,十位数也分离出来了。153-1×100-5×10=153-100-50→3,最后这个数字就是个位数。这是最经典的数字分离拆分运算,在LOGO语言、C++语言、PYTHON语言中都是通用的,都是一样的道理。
我们所需要的三位数,用FOR[I 100
999][循环体],就能得到从100~999所有的三位数。按照这样思路编写出来的LOGO程序是这样子的:
to sxh_b ;for
MSWLogo-FMSLogo
for[i 100 999][
;产生100-999所有3位数
make "b
int(:i/100) ;从中分解出百位数
make "hm
:i-:b*100 ;减去百位剩下后面是十位及个位数
make "s
int(:hm/10) ;分解出十位数
make "g
:i-:b*100-:s*10 ;减去百位及十位的值剩下的就是个位数
if
:b*:b*:b+:s*:s*:s+:g*:g*:g=:i[
;这是发现3位自幂数的条件
pr :i]]
end
这样的数字拆分方法,原理直观简单,也是最常用的编程方式。
还有精彩的编程方法待续
LOGO编程画出来的动画图形:
加载中,请稍候......