黑马程序员技术交流社区

标题: 求任意的n到m之间的水仙花数? [打印本页]

作者: Fighting--BJ    时间: 2015-6-20 01:10
标题: 求任意的n到m之间的水仙花数?
学了for循环后,自己能分别写出100到1000和1000到10000之间的水仙花数,现在想扩展一下,想求任意的n到m之间的水仙花数,求解?
作者: Dove丶凡    时间: 2015-6-20 04:12
什么是水仙花数
作者: 李言    时间: 2015-6-20 08:59
赞一个,嘿嘿
作者: 张国繁    时间: 2015-6-20 10:46
大神,你做的挺快的,我还没做到呢,做到了可以交流下
作者: XiaoBaoMi    时间: 2015-6-20 11:25
取出 个位 十位 百位 分别三次幂 再相加 判断和原数 是否相等
作者: Fighting--BJ    时间: 2015-6-20 21:46
张国繁 发表于 2015-6-20 10:46
大神,你做的挺快的,我还没做到呢,做到了可以交流下

大神可不敢担,我也就是一只小菜鸟.呵呵,共同努力!
作者: Fighting--BJ    时间: 2015-6-20 21:49
XiaoBaoMi 发表于 2015-6-20 11:25
取出 个位 十位 百位 分别三次幂 再相加 判断和原数 是否相等

恩,谢谢!这个我明白,这是求100--1000之间的,我现在是想问:求任意自然数之间n到m中的水仙花数?
作者: aofex    时间: 2015-6-20 23:03
都这么厉害啊  
作者: qingying5810    时间: 2015-6-21 10:47
还是要确定m是几位数
作者: qingying5810    时间: 2015-6-21 10:48
#include <stdio.h>  int main(int argc, const char * argv[]) {     // insert code here...     int n,m,j=0;     printf("请输入m、n并以空格隔开且m<n\n");     scanf("%d %d",&m,&n);     int a,b,c,d;     if (m>=1&&m<10000&&n<10000) {         for (int i=m; i<n; i++) {             a=i%10;             b=(i%100)/10;             c=(i%1000)/100;             d=(i/1000);             int sum = a*a*a + b*b*b + c*c*c +d*d*d;             if (i==sum) {                 j++;                 printf("%d个%d\n",j,i);             }         }          }               return 0; }
作者: XiaoBaoMi    时间: 2015-6-21 12:01
用一个for循环 监听 (a++)n 和 m是多少位之间的水仙花数(3,4,5,6,7.。。。。), 再写一个for循环 提取(a--)每个位置上的数 再用一个for循环 3就是3次方 4就是4次方 判断




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2