返回列表 回复 发帖

疑问

请哪位仁兄帮我编一个程序(C)
输出所有的水仙花数
(什么是水仙花数?比如一个三位数,它的个位的立方加上十位的立方再加上百位的立方等于这个数本身的话,此数叫作水仙花数!)
o 不会
啥意思?
http://blog.csdn.net/thisisll/ http://spaces.msn.com/thisisll/
有时间的话就帮你一下吧!我上年刚好做过啊
唉~~
搞这么多名词~~~
http://blog.csdn.net/thisisll/ http://spaces.msn.com/thisisll/
把下面代码加到main()中就可以了

int nHundred = 1;
int nDecade = 0;
int nOnesPlace = 0;
int nTmp=0;
for(int i=100 ;i<1000;i++)
{
   nHundred = i / 100;
   nTmp = i % 100;
   nDecade  = nTmp / 10;
   nOnesPlace = nTmp %10;

   nTmp = nHundred * nHundred ;
   nHundred  = nTmp * nHundred ;
   
   nTmp = nDecade * nDecade  ;
   nDecade = nDecade * nTmp ;

   nTmp = nOnesPlace * nOnesPlace ;
   nOnesPlace = nTmp * nOnesPlace ;
   if( i == nHundred  + nDecade + nOnesPlace )
   {
      printf("%d\n",i);
   }
}
当然,这只是3位数的,那你也要动动脑筋,扩展一下就好了
三位数的我已经编出来了,这个算法也比较简单!可是如果说是把所有的水仙花数输出的话,也就是说这个程序在任何一个机子上都能输出那个机子所能输出的所有数!在一般的64位机上述出所能输出的,只要我们知道long型的范围的话,定义一个循环。也能输出。 可是……
最好能用c++
数是数不尽的,你怎么写算法呢?
返回列表