JavaScript求取水仙花数
一、什么是水仙花数
水仙花数也称为超完全数字不变数、自幂数、阿姆斯壮数、阿姆是特朗数。
水仙花数是指一个三位数,每个位数上数字的3次幂之和等于数字它本身。
水仙花数是自幂数的一种,三位的三次自幂数才叫做水仙花数;三位的水仙花数总够有4个:153,370,371,470
二、通过JS取得水仙花数
思路分析:
1、使用for循环查找遍历 从100到 999的所有三位数;
2、判断遍历的数字是否是各个位数的数字的3次幂数之和是否等于数字本身,如果是即为水仙花数,则在控制台输出(如何选取各个位数)
(1)选取个位数 模以10,得到余数即为个位数
(2)选取十位数 i除以10,再对结果进行取整,取整后得到一个两位数的整数。用这个结果对10取模,得到十位数
(3)选取百位数 三位数除以100,再取整,就得到了百位数。
3、使用 if语句 判断 i 是否是水仙花数。Math对象用于执行数学任务,pow(x , y)函数用于求取 x 的 y 次幂。
for(var i = 100;i<=999;i++){
var gw = i%10;
var sw = parseInt(i/10) % 10;
var bw = parseInt(i/100);
if(i == Math.pow(gw,3)+Math.pow(sw,3)+Math.pow(bw,3)){
console.log(i);
}
}
输出结果为:

三、求取其他的自幂数
- 一位自幂数:独身数
- 两位自幂数:没有
- 三位自幂数:水仙花数
- 四位自幂数:四叶玫瑰数
- 五位自幂数:五角星数
- 六位自幂数:六合数
- 七位自幂数:北斗七星数
- 八位自幂数:八仙数
- 九位自幂数:九九重阳数
- 十位自幂数:十全十美数
1、四叶玫瑰数 (1634,8208,9474)
for(var i = 1000;i<=9999;i++){
var gw = i%10;
var sw = parseInt(i/10)%10;
var bw = parseInt(i/100)%10;
var qw = parseInt(i/1000);
if(i == Math.pow(gw,4)+Math.pow(sw,4)+Math.pow(bw,4)+Math.pow(qw,4)){
console.log(i);}
}

2、五角星数 (54748, 92727,93084)
console.time('五角星数');
for(var i = 10000;i<=99999;i++){
var gw = i%10;
var sw = parseInt(i/10)%10;
var bw = parseInt(i/100)%10;
var qw = parseInt(i/1000)%10;
var ww = parseInt(i/10000);
if(i==Math.pow(gw,5)+Math.pow(sw,5)+Math.pow(bw,5)+Math.pow(qw,5)+Math.pow(ww,5)){
console.log(i);}
}
console.timeEnd('五角星数');

注意:这里面使用 console.time() 和 console.timeEnd() 来计算 运行的时间
console.time() 方法是作为计算器的起始方法,该方法一般用于测试程序执行的时长。
console.timeEnd() 方法为计算器的结束方法,并将执行时长显示在控制台。
6、六合数(548834)
console.time('六合数');
for(var i = 100000;i<=999999;i++){
var gw = i%10;
var sw = parseInt(i/10)%10;
var bw = parseInt(i/100)%10;
var qw = parseInt(i/1000)%10;
var ww = parseInt(i/10000)%10;
var shw = parseInt(i/100000);
if(i==Math.pow(gw,6)+Math.pow(sw,6)+Math.pow(bw,6)+Math.pow(qw,6)+Math.pow(ww,6)+Math.pow(shw,6)){
console.log(i);}
}
console.timeEnd('六合数');

7、北斗七星数(1741725,4210818,9800817,9926315)
console.time('北斗七星数');
for(var i = 1000000;i<=9999999;i++){
var gw = i%10;
var sw = parseInt(i/10)%10;
var bw = parseInt(i/100)%10;
var qw = parseInt(i/1000)%10;
var ww = parseInt(i/10000)%10;
var sww = parseInt(i/100000)%10;
var qww = parseInt(i/1000000);
if(i==Math.pow(gw,7)+Math.pow(sw,7)+Math.pow(bw,7)+Math.pow(qw,7)+Math.pow(ww,7)+Math.pow(sww,7)+Math.pow(qww,7)){
console.log(i);}
}
console.timeEnd('北斗七星数');

8、八仙数(24678050,24678051,8859347)
console.time('八仙数');
for(var i = 10000000;i<=99999999;i++){
var gw = i%10;
var sw = parseInt(i/10)%10;
var bw = parseInt(i/100)%10;
var qw = parseInt(i/1000)%10;
var ww = parseInt(i/10000)%10;
var sww = parseInt(i/100000)%10;
var qww = parseInt(i/1000000)%10;
var www = parseInt(i/10000000);
if(i==Math.pow(gw,8)+Math.pow(sw,8)+Math.pow(bw,8)+Math.pow(qw,8)+Math.pow(ww,8)+Math.pow(sww,8)+Math.pow(qww,8)+Math.pow(www,8)){
console.log(i);}
}
console.timeEnd('八仙数');

补充一些其他的Math对象:
- Math.pow(2,53) // => 9007199254740992: 2 的 53次幂
- Math.round(.6) // => 1.0: 四舍五入
- Math.ceil(.6) // => 1.0: 向上求整
- Math.floor(.6) // => 0.0: 向下求整
- Math.abs(-5)// => 5: 求绝对值
- Math.max(x,y,z) 返回最大值
- Math.min(x,y,z) 返回最小值
- Math.random() 生成一个大于等于0小于1.0的伪随机数
- Math.PI // π: 圆周率
- Math.E // e: 自然对数的底数
- Math.sqrt(3) 3的平方根
- Math.pow(3, 1/3) 3的立方根
- Math.sin(0) 三角函数: 还有Math.cos, Math.atan等
- Math.log(10) 10的自然对数
- Math.log(100)/Math.LN10 以10为底100的对数
- Math.log(512)/Math.LN2 以2为底512的对数
- Math.exp(3) e的三次幂
通过JS来得到一系列的自幂数,是有一定的规律在里面的,有兴趣的话可以动手尝试一下,如果看了这篇博客能有所帮助的话,不胜荣幸~
JavaScript求取水仙花数的更多相关文章
- 求取水仙花数 && 将整数分解成质因数
[程序3] 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如: 153是一个"水仙花数", ...
- 求n位水仙花数
求n位水仙花数 A.两个关键 1.n位水仙花数的范围是什么? n位水仙花数的范围是[10n-1,10n) 2.如何判断是否为水仙花数 核心操作: 2-1.如何得到每一位? A.核心思想 对得到的数进行 ...
- java实现求二十一位水仙花数(21位水仙花数)
一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数. 例如: 当N=3时,153就满足条件,因为 1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水 ...
- php 求水仙花数优化
水仙花数是指一个n位数(n>=3),它每一个位上数字的n次幂之和等于它本身,n为它的位数.(比如:1^3+5^3+3^3 = 153) 水仙花数又称阿姆斯特朗数. 三位的水仙花数有4个:153, ...
- acm水题3个:1.求最大公约数;2.水仙花数;3.判断完数
//7.求两个整数的最大公约数#include<stdio.h>//用穷举法求出最大公约数int gcd1(int m,int n){ int min = m > n ? n : m ...
- 二、求水仙花数,打印出100-999之间所有的"水仙花数"
所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身. 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方 public c ...
- C#学习笔记(29)——Linq的实现,Lambda求偶数和水仙花数
说明(2017-11-22 18:15:48): 1. Lambda表达式里面用了匿名委托,感觉理解起来还是挺难的.求偶数的例子模拟了Linq查询里的一个where方法. 2. 蒋坤说求水仙花数那个例 ...
- 用js 的for循环打印三角形,提取水仙花数,求本月多少天
第一题:用for循环打印三角形 //第一个 for(var x = 1;x <= 4;x++){ //控制行数 :由 1 到 4 for(var y = 1;y <= x;y++){ // ...
- js中求水仙花数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- python学习之socket&黏包
7.4 socket [重要] 避免学习各层的接口,以及协议的使用, socket已经封装好了所有的接口,直接使用这些接口或者方法即可,方便快捷,提升开发效率. socket在python中就是一 ...
- ssh端口转发功能
一.SSH 端口转发能够提供两大功能: 1.加密SSH Client 端至SSH Server 端之间的通讯数据 2.突破防火墙的限制完成一些之前无法建立的TCP 连接 (隧道功能) 二:SSH端口 ...
- 【深度聚类】Superpixel Sampling Networks
Superpixel Sampling Networks 原始文档:https://www.yuque.com/lart/papers/ssn 本文的思想很简单,传统的超像素算法是一种有效的低/中级的 ...
- 问题记录 | 配置ubuntu18.04+cuda9.0+cudnn服务器tensorflow-gpu深度学习环境
因为实验室服务器资源有限,我被分配的服务器经常变化,但是常常就分到连显卡驱动以及cuda都没有装的服务器,真的很头疼,我已经配了四五台了,特此记录一下,以便以后直接照版本安装. Install nvi ...
- javascript 数据类型之数值转换
数值转换 一.有3个函数可以把非数值转换为数值: Number() parse Int() parse Float() 说明: 1.Number()可以用于任何数据类型,强转类型,如果不能把指转成数值 ...
- 爬取网易云音乐评论!python 爬虫入门实战(六)selenium 入门!
说到爬虫,第一时间可能就会想到网易云音乐的评论.网易云音乐评论里藏了许多宝藏,那么让我们一起学习如何用 python 挖宝藏吧! 既然是宝藏,肯定是用要用钥匙加密的.打开 Chrome 分析 Head ...
- HDU 1160 FatMouse's Speed (动态规划、最长下降子序列)
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 使用render函数渲染组件
使用render函数渲染组件:https://www.jianshu.com/p/27ec4467a66b
- Luogu P3942 将军令
题目 维护每个点子树中最深的没有被覆盖的点(仅计算这条链上的关键点)的距离. 若\(u\)为关键点,则\(d_u=-k-1\). 记录\(mx=\max\limits_{v\in son_u}d_v+ ...
- 软考题型—PERT图(项目计划评审技术)
经历过软件危机和大量软件项目的失败,人们对软件工程产业现状进行分析后,得出普遍性结论便是:软件项目成功率低的原因很可能就是项目管理能力太弱.由于软件本身的特殊性和复杂性,将项目管理思想引入软件工程领域 ...