扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
水仙花数即三位的自幂数。所谓自幂数,就是指一个 n 位数 ( n≥3 ),其每位上的数字的 n 次幂之和等于本身。
创新互联主要从事网站制作、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务湘阴,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
所以水仙花数,首先是三位数,形式为abc,同时a,b,c的立方和值与原本数相同。
类似的还有
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
等等。
对于水仙花数的判断,需要按照以下步骤:
1 提取该数的个位,十位,百位值。
2 计算三个数的立方和。
3 与原值比较,如相等则是。
要输出所有水仙花数,需要:
1 对所有三位数,即100到999遍历;
2 对每个数判断是否为水仙花数,如是则退出。
当循环结束,所有的水仙花数就输出成功了。
代码如下:
int isNarcissistic(int n)
{
int a = n/100;
int b = n/10%10;
int c = n%10;
return a*a*a + b*b*b + c*c*c == n;
}
int main()
{
int i;
for(i = 100; i 1000; i ++)
if(isNarcissistic(i)) printf("%d ",i);
}
输出结果如下:
153 370 371 407
水仙花数指的是一个数的各位数字的立方和等于数字本身,那么我们怎么样用C语言去判断一个数字是不是水仙花数呢?下面我给大家分享一下。
工具/材料
Visual Studio 2015
01
首先打开Visual Studio 2015软件,新建一个C语言程序,如下图所示
02
然后我们需要在C语言文件中引入库文件stdio.h,它里面包含了很多后面要使用的函数,如下图所示
03
接着我们就需要实现水仙花数的判断逻辑,主要是把输入的数字各个位都取出来,然后进行立方求和,最后和输入的数字进行比较,如下图所示
04
最后我们按ctrl+F5运行程序,在弹出的界面中,我们输入一个数字,程序就会自动告诉我们这个数字是不是水仙花数
你的C语言程序我帮你改完了,完整的程序如下(改动的地方见注释)
#includestdio.h
int narcissistic(int number){
//这里n=1改成n=0并加product变量保存连乘积
int a,b=0,n=0,c,number2,number3,product;
number2=number;
number3=number;
while(number0){//这里把number10改成number0
number=number/10;
n++;
}
while(number20){//这里把number2=1改成number20
a=number2%10;
number2=number2/10;
product=1;//这里初始化product变量为1
for(c=0;cn;c++)//这里把c=1;改成c=0;
product=product*a;//这里把a=a*a;改成product=product*a;
b=b+product;//这里把b=b+a;改成b=b+product;
}
if(b==number3)
return 1;
else
return 0;
}
int main(){
int i;
for(i=100;i1000;i++){
if(narcissistic(i)==1)
printf("%d ",i);
}
return 0;
}
有两种办法,第一,水仙花数很少,三位数的没几个,直接判断是不是那几个就行了。
然后正确的思路是,把三位数拆开。这个三位数是num,三位立方和为ans的话,ans初始为0,之后
while(num0)
{
temp
=
num%10;
ans
=
temp
*temp
*temp;
num
/=
10;
}
最后比较ans和一开始的num就行了,注意是一开始的那个。输入的时候把那个数记录一下就行了。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流