本文目录一览:
求100-666间所有的水仙花数
求100-666间所有的水仙花数为:153,370,371,407。
方法:水仙花数:是指一个n位的正整数(n=3),它的每个数字的n次幂之和等于它本身。推荐一个学C语言/C++的学习裙【 七三零,一三零,二二一 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料!153=1*1*1+5*5*5+3*3*3 153为三位数,它的每个数字的三次方之和等于153。根据这一特性,我们可以得出,一个三位数的百位数就等于该数除以100的整数部分(567除以100的整数部分为5,即它的百位数是5),而十位数等于该数减去百位数乘以100再除以10的整数部分((567-5*100)再除以10的整数部分等于6,即该数十位数是6),而个位数就等于该数减去百位数乘以100,再减去十位数乘以10(567-5*100-6*10=7,个位数为7)
水仙花数有哪些
水仙花数又称超完全数字不变数。
水仙花数有:153、370、371、407、1634、8208、9474、54748、92727、93084、548834、1741725、4210818、9800817、9926315、24678050、24678051、88593477、146511208、472335975、534494836、912985153、4679307774。
凡满足一个N位整数=其各位数字K次方之和的自然数称之为“完全数字不变数(PDI)”(或“坎得尔数”) 。若n=k则称为“超完全数字不变数”(计为PPDI)。PPDI必为PDI。
js写出水仙花数思路分析
1、使用for循环查找遍历,从100到999的所有三位数。
2、判断遍历的数字是否是各个位数的数字的3次幂数之和是否等于数字本身,如果是即为水仙花数,则在控制台输出(如何选取各个位数)。
(1)选取个位数,模以10,得到余数即为个位数。
(2)选取十位数,i除以10,再对结果进行取整,取整后得到一个两位数的整数。用这个结果对10取模,得到十位数。
(3)选取百位数,三位数除以100,再取整,就得到了百位数。
水仙花数有哪些?
一、水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(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语言水仙花数编程分析举例
1、问题描述
输出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 13 + 53 + 33。
2、问题分析
根据“水仙花数”的定义,判断一个数是否为“水仙花数”,最重要的是要把给出的三位数的个位、十位、百位分别拆分,并求其立方和(设为s),若s与给出的三位数相等, 三位数为“水仙花数”,反之,则不是。
3、算法设计
“水仙花数”是指满足某一条件的三位数,根据这一信息可以确定整数的取值范围是 100〜999。对应的循环条件如下:
4、对代码的说明:
将n整除以100,得出n在百位上的数字hun;将(n-i*100)整除以10(或将n先整除以10再对10求模n/10%10),得出n在十位上的数字ten;将n对10取余,得出n在个位上的数字ind;求得这三个数字的立方和是否与其本身相等,若相等,则该数为水仙花数。
对于每个位置上的数值将其拆分的算法有很多种,根据不同情况选择不同算法(对于同一问题不同算法的效率有时会相差很多)。
下面是完整的代码:
运行结果:
result is:153 370 371 407
参考资料:百度百科-水仙花数
急急急!求100到999之间所有的水仙花数
要程序的这里有:
#include stdio.h
#include math.h
int res[3] = {};
int *p = res;
int main(){
int func(int);
for(int i=100;i1000;i++){
//各位数字x的立方和
p = res; //循环后应该重置到res数组首地址
if(func(i) == i){
printf("%d ",i);
}
}
}
int func(int num){
int r = 0;
if(num9){
func(num/10);
}
*p = num % 10;
p++;
if(p == res+3){ //指向末尾+1,存入数组结束
p = res;
for(int i=0;i3;i++){
r += pow(*p,3);
p++;
}
return r;
}
return 0;
}
如有帮助,请点赞支持原创QVQ