JavaScript算法教程 水仙花数及拓展
沉沙 2018-11-06 来源 : 阅读 1087 评论 0

摘要:本篇教程介绍了JavaScript算法教程 水仙花数及拓展,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

本篇教程介绍了JavaScript算法教程 水仙花数及拓展,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

<

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=2
11                     } else {
12                         i /= 10;         //进到这里时num<i,除以10跟num同位数;  以1634为例:i=1000
13                         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         }    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端JavaScript频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程