水仙花数只能是3位数吗? 那是题目的规定。
什么是水仙花数? 一、水仙花数(Narcissistic number)也2113被称为超完全5261数字不变数(pluperfect digital invariant,PPDI)、自恋数、自幂数、阿姆斯4102壮数或阿姆斯特朗1653数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3+5^3+3^3=153)。二、例题:求取100至100,000以内的所有水仙花数。思路分析:1、总体框架用for遍历指定区间,判定当前循环变量【i】是否为水仙花数:是,则输出到控制台;问题细化为:判定某自然数【i】是否为水仙花数,具体过程由步骤2给出。2、子框架:判定过程大致分两步进行:2.1、准备参数根据【i】,算得【i】的总位数D(digit);【i】中各位数的D次幂的和sum;2.2、判定结果比较sum和【i】值的大小,结果传给【步骤1】;此时问题进一步细化为:计算总位数D和各位数的D次幂之和sum,具体结果分别由【步骤3】、【步骤4】给出;3、D的计算用10累除n,其商截尾取整:n/10,再放入while语句,统计商变为0时的总累除次数,该次数+1即为D;4、sum的计算根据定义,只需利用for循环获取自然数n的各位数的值,在用sum累加各位数的D次幂即可。具体代码:运行结果:扩展资料:关于c语言。
打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 打印出所有的来“水仙花数”,所谓源“水仙花数”是指一2113个三位数5261,其各位数字立方和4102等于该数本身。例如:1653153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:main(){int i,j,k,n;printf(\"'water flower'number is:\");for(n=100;n;n+){i=n/100;分解出百位*/j=n/10%10;分解出十位*/k=n%10;分解出个位*/if(i*100+j*10+k=i*i*i+j*j*j+k*k*k){printf(\"%-5d\",n);}}printf(\"\\n\");}
谁说水仙花数只能是3位数? 在1000以内的水仙花数共有4个,分别为:153、370、371、407四位的水仙花数1634,8208,9474这类数叫做回归数.最多只有60位.回归数英国大数学家哈代(G.H.Hardy,1877-1947)曾经发现过一种有趣的现象:153=1^3+5^3+3^3 371.