js算法集合(一) 水仙花数 及拓展(自幂数的判断)
来源:互联网 发布:淘宝店铺设置新品上架 编辑:程序博客网 时间:2024/06/07 07:38
1、验证一个数是否为水仙花数
①要写水仙花数的算法,我们首先来了解一下什么是水仙花数,水仙花数是指一个 3位正整数 ,它的每个位上的数字的 3次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153);
②了解了什么是水仙花数我们就开始分析该怎么下手。通过定义来看我们首先要把每一位数都取出来,然后通过验证等式是否成立来找出水仙花数;
③那么怎么去取到一个三位数的每一位呢,很简单,还是拿153来做例子吧,153%10取余为1将个位取出来,然后153%100取余,然后除以10取整,获得十位,153/100取整获得百位数;
④拿到了三位数怎么去判断呢,通过if判断语句来判断1^3 + 5^3+ 3^3 = 153是否成立,成立打印出来。我们先写一个判断水仙花数的代码:
1 while (true){ 2 var num=Number(prompt('请输入一个三位数')); 3 if(num<1000&num>=100){ 4 var a=num%10; //个位数 5 var b=parseInt(num%100/10); //十位数 6 var c=parseInt(num/100); //百位数 7 }else { 8 alert('输入错误;'); 9 continue;10 }11 if(num==a*a*a+b*b*b+c*c*c){12 alert(num+"是水仙花数");13 break;14 }else {15 alert(num+"不是是水仙花数");16 break;17 }18 }
2、打印出所有的水仙花数
①我们已经知道了怎么去判断一个数是否是水仙花数,那么怎么去打印所有的水仙花数呢,第一个想到的一定是循环。
②既然水仙花数是一个三位数,那么我们只要把所有的三位数判断一下就可以了,话不多说,看代码:
1 document.write('水仙花数有:')2 for(var num=100;num<1000;num++){3 var a=num%10; //个位数4 var b=parseInt(num%100/10); //十位数5 var c=parseInt(num/100); //百位数6 if(num==a*a*a+b*b*b+c*c*c){7 document.write(num+',')8 }9 }
3、自幂数的算法,我们把水仙花数拓展一下,来做一做自幂数的算法;
①首先还是先了解一下什么是自幂数,自幂数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153);
②水仙花数只是自幂数的一部分,从水仙花数拓展,判断一个数是否是自幂数,首先要判断它是一个几位数
③然后取到数的每一位,来进行判断,以1634为例,具体的请看代码注释:
1 while (true) { 2 var num = Number(prompt('请输入一个大于100的数')); 3 if (num >= 100 && parseFloat(num) == parseInt(num)) { 4 var i = 100; 5 var count = 0, sum = 0, a; 6 /*判断num是几位数*/ 7 while (true) { 8 if (num / i >= 1) { 9 i *= 10;10 count++; //count = 1;时,为3位数,2时为四位数; 以1634为例:count=211 } else {12 i /= 10; //进到这里时num<i,除以10跟num同位数; 以1634为例:i=100013 break;14 }15 } /*取到每一位并计算每位数几次幂之和*/16 while (i >= 1) {17 var b = 1;18 a = parseInt(num % (i * 10) / i); //取到num的每一位, 取千位为 1634/1000取整; 百位:1634%1000/100取整 十位:1634%100/10取整 个位1634%10; //百位和十位的规律都是 1634%(i*10)/i取整;同时对千位和个位进行试验,1634%10000=1634;1634%10/1;依旧成立19 for (var j = 1; j <= count + 2; j++) {20 b *= a; //根据位数,来决定每位数的几次幂21 }22 sum += b; //对每位数的几次幂进行求和;23 i/=10; //更新循环变量取下一位24 } /*判断是否为自幂数*/25 if (num == sum) {26 alert(num + "是自幂数");27 break;28 } else {29 alert(num + "不是是自幂数");30 break;31 }32 } else {33 alert('输入错误;');34 continue;35 }36 }
阅读全文
0 0
- js算法集合(一) 水仙花数 及拓展(自幂数的判断)
- 自幂数(典型的水仙花数)-20151107
- 15-水仙花数(算法)
- JS 用JS实现判断水仙花数
- js找出指定范围内(m,n)的水仙花数
- Armstrong数 (水仙花数)
- C#程序设计(一)---水仙花数
- HDOJ2010水仙花数--水题(一)
- 水仙花数的改进算法
- 求水仙花数的算法
- 【课堂程序整理】检验自幂数(由水仙花数扩展)
- 水仙花数(hdu2010)
- 水仙花数(2010)
- 水仙花数(daffodil)
- 水仙花数字的通用算法(可计算21,34,甚至39位的水仙花数)
- js.判断一个数是否是水仙花数
- 什么是水仙花数并判断水仙花数
- 判断水仙花数
- JavaScript中this的用法详解
- Css改变radio样式
- 一些有用的地址s
- MySql学习笔记之:基本的建表语句和增删改
- 广播机制,动态广播,静态的广播Broadcast,
- js算法集合(一) 水仙花数 及拓展(自幂数的判断)
- Selenium WebDriver中常用到的JavaScript操作
- gitlab runner 的安装
- JavaScript中return的用法详解
- MYSQL 排名方式汇总
- HTML5和CSS3实现3D转换效果 CSS3的3D效果
- 文科生也能搞定的深度学习入门漫画!(上)
- Centos 安装配置jdk
- 整形数组合并