贵州铁塔公司官网:一道数学题,请帮帮忙
1.题目
水仙花数是一个三位数,其各位上数的立方和等于这个数,例如153,13+53+33=153。请找出它们来,OK,下面我们就来找一下这种美妙的数。
2.编程简析
水仙花数既然是一个三位数,那么它的范围也就再清楚不过了,100~999,所以总计有900种可能的情况。怎样判断这个数是不是水仙花数呢?因为条件是各位上数的立方和等于这个数,那么如果假设这个数是n,并且各数位从高到低分别是a?b?c,那么a?b?c和n之间有种一一对应关系。其实我们这里的问题也就成了知道某个数来拆分其数位了。三个数位拆分如下:
a=Int?n/100?
b=Int??n-100?a?/10?
c=n-100?a-b?10
条件也就是a?a?a+b?b?b+c?c?c=n。另外,程序的整体结构是循环内套分支。
3.语言、界面、源程序
(1)语言
通过Virual BASIC6.0语言来实现。
(2)界面
界面非常简单,建立一标准EXE工程,其caption设为水仙花数?一切OK。我们将代码加给Form_Click??即窗体的单击事件,将来运行时,我们只要用鼠标单击一下窗体,程序就执行了。
(3)源程序
Option Explicit
Private Sub Form_Click??
Dim n As Integer ’声明变量
Dim a? b? c As Integer
For n=100 To 999
a=Int?n/100?
b=Int??n-100?a?/10?
c=n-100?a-b?10
If n=a?a?a+b?b?b+c?c?c Then
Print n ’输出
End If
Next n
End Sub
?以上程序在VB6.0 WIN 2000下调试通过?
4.编程小结
这样我们查出了所有的水仙花数,有四个,分别是153,370,371,407。
参考资料:http://www.pmit.com.cn/printpage.asp?ArticleID=153
好吧 我觉得是这样的
如果把你这个过程为 f(x)
那么 f(153)=153
这个153是惟一的,也就是说如果你解 f(x)=x 这个方程,得到的只有x=153这个解。
那这样我估计是其它非153的数在经过这个方程的转化过后生成一个不等于它本身的新数,因为这个新数不是153,所以这个新数就会再产生一个新数。只要产生的新数不是153,这个程序就会继续下去。
这个程序只在当产生的新数为153的时候停止,因为f(153)=153。
不知道这样算不算证明,或许应该有更加标准的证法,比如用数学归纳或者反正法。
还有一个问题就是数字越变越大,得到153的机会就会越来越小。而且为什么起始数要是3的倍数?我也不懂
好象叫水仙花数来着...忘了...
153: 1+125+27=153
太深,不懂