c语言—水仙花数

c语言—水仙花数

  • 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number)
  • 水仙花数指的是一个n位数(n>=3),他的每一个位上的数字的n次幂之和等于他的本身,求出所有的三位数的水仙花数
  • 例如:1^3 + 5^3+ 3^3 = 153
方法一:

先遍历0~999然后拆出每一个数的个位、十位、百位,最后求三次幂之和是否为此数

#include<stdio.h>
int main()
 {	
    int a, b, c,i;
	
    for (i = 0; i < 999; i++){
        a = i / 100;      //取个位数字
        b = i / 10 % 10; //取十位数字
        c = i % 10;     //取百位数字
        //判断这个数三次幂之和是否等于它本身
        if (a*a*a + b*b*b + c*c*c == i){
            printf("%d ", i);
        }
    }
    return 0;
}

运行结果:
在这里插入图片描述

方法二:

利用三个循环

#include<stdio.h>
#include<math.h>
 
int main()
{
	int i, a, b, c;
	for(a=0;a<=9;a++)//取百位数字
	{
		for (b = 0; b <= 9; b++)//取十位数字
		{
			for (c = 0; c <= 9; c++)//取个位数字
			{
				i = a * 100 + b * 10 + c;//计算出这个数
				//判断这个数三次幂之和是否等于它本身
				if (pow(a, 3) + pow(b, 3) + pow(c, 3) == i)
					printf("%d ", i);
			}
		}
	}
	return 0;
}

运行结果:
在这里插入图片描述

pow(x,y)
数学函数,表示x的y次方,使用此函数必须加头文件#include <math.h>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值