水仙花数解法

水仙花数,也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个 n 位数(n≥3 )它的每个位上的数字的 n 次幂之和等于它本身.

例如: (1^3 + 5^3+ 3^3 = 153)(1634 = 1^4 + 6^4 + 3^4 + 4^4 ),(54748 = 5^5 + 4^5 +7^5 + 4^5 +8^5)。

编程核心算法:

在于如何取出整数的每一位数字。

注意点:

需要一个变量a承接输入的整数n,对a进行操作求每一位,求出的每一位的次幂累加 和 输入的整数n 比较是否相等

/*水仙花数算法*/ 
    a=n;
    while(a)
    {
        b=a%10;
        a=a/10;
        sum+=pow(b,bit);

    }

例如(输入153):

a=153

第一次循环取出数字3

b=153%10=3 

a=153/10=15

第二次循环取出数字5

b=15%10=5

a=15/10=1

第三次循环取出数字1

b=1%10=1

a=1/10=0(此时结束循环)

当 a为0时结束循环

#include<stdio.h>
#include<math.h>
int main()
{
	int n;//输入的整数 
	int a;//保存输入的整数 
	int b;//保存得到的每一位数字 
	int bit=0;//标记输入的整数的位数需要初值 
	int sum=0;//它的每个位上的数字的 n 次幂之和 累加操作需要初值
	 
	scanf("%d",&n);

/*用来求整数的位数*/	
	a=n;	
	while(a)
	{
		a=a/10;
		bit++;
	}

/*水仙花数算法*/ 
	a=n;
	while(a)
	{
		b=a%10;
		a=a/10;
		sum+=pow(b,bit);

	}	
	
	if (sum==n)
	{
		printf("%d是水仙花数\n",n);
	}
	else
		printf("no\n");
	return 0;
} 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

膽小

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值