javascript 水仙花数计算

水仙花数即三位自幂数,每个位数上数字的3次幂之和等于数字它本身。例如:371 ,3的三次方、7的三次方和1的三次方之和等于371,。
类似的有一位自幂数,两位自幂数,四位自幂数…,大致思路为,一位自幂数为0 ~ 9之间的数,二位自幂数为10 ~ 99之间的某些数,三位自幂数为100 ~ 999之间的某些数…以此类推,有个整数有m位,可以得到最小数为Math.pow(10, m-1),一位次幂数最小数为0,最大数为Math.pow(10, m)-1,【Math.pow(x,y) x的y次幂】,在最小数与最大数之间遍历,当某数每位数的m次幂之和等于该数时,输出该数

function getArry(m){
	let maxcount = Math.pow(10, m);
	let minCount = m==1?0 : Math.pow(10, m-1);
	let arry=[];
	for(var i= minCount;i<maxcount;i++){
		let count = 0;
		for(var j=0;j < m;j++){
			count += Math.pow(parseInt(i/Math.pow(10, m-j-1))%10,m)
		}
		if(count == i){
			arry.push(i)
		}
	}
	return arry;
}
getArry(3)
输出:[153, 370, 371, 407]

getArry(4)
输出:[1634, 8208, 9474]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值