水仙花数问题

水仙花数问题

编程其实挺简单的 ,就是头顶有点凉!

水仙花数问题简介:

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

说简单点就是 一个3位数,它的每个位上的数字的3次幂之和等于它本身。
例如:1³+5³+3³=153

这东西不用再分解了吧!
算了知道你们懒。

假如有一个数字153
153(1是百位,5是十位,3是个位)
1³(百位上数字的三次方)
5³(十位上数字的三次方)
3³(个位上数字的三次方)
1³=1×1×1=1;
5³=5×5×5=125;
3³=3×3×3=27;
1+125+27=153;(各个位上的数字三次方之和等于原数字)

那么这个数字153就是水仙花数!

那么正片开始:
利用C++代码我们可以看一下所有的三位数中有几个水仙花数!

算法思想:
1.设计一个算法能对100-1000之间的数进行分析,将符合条件的数进行输出
2.三个int变量分别代表 个位、十位、百位上的数字 例如 a代表个位 b代表十位 c 代表百位 ;
3.怎么实现上述的代表是最关键的:
可以利用如下表达式:
a=num%10;(个位上的数字相当于这个三位数除以10取余数,例如338%10=8)
b = num / 10 % 10;(十位上的数字相当于这个三位数除以10之后再除以10取余数,例如555/10=55.5%10=5)
c = num / 100;(百位上的数字相当于这个三位数除以100,因为是int型,向下取整,例如:int c=113/100=1.13,int c=1)
4.取到每一位上的数字之后,进行判断a³+b³+c³等于不等于a×1+b×10+c×100
也就是原数字。
5.等于的话就是水仙花数输出,不等于的话不是水仙花数!
6.函数功能采用do while实现100-1000也就是三位数的循环

附上源码

#include<iostream>
using namespace std;

int main() {
	int num = 100;
	do {
		int a = 0;
		int b = 0;
		int c = 0;
		a = num % 10;
		b = num / 10 % 10;
		c = num / 100;
		if (a*a*a+b*b*b+c*c*c==a*1+b*10+c*100)
		{
			cout << num << endl;
		}
		
		num++;
	} while (num < 1000);
	
	system("pause");
	return 0;
	
}

欢迎测试,欢迎指正。
如果您觉得文章还不错,欢迎点赞评论加关注哦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值