用js编写一个函数判断一个正整数是不是“快乐数”。

对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程,
如果数字变成了1,这个数就是快乐数,如果无限循环始终变不到1,这个数就不是快乐数。

高内聚(只做好一件事情),低耦合(不要写高耦合代码)

1002 ---> 5 ---> 25 ---> 29 ---> 85 ---> 89 ---> 145 ---> 42 ---> 20 ---> 4 ---> 16 ---> 37 ---> 58 ---> 89 
132    2 => 13  3  => 1  
1003 ---> 10 ---> 1
1009 ---> 82 ---> 68 ---> 100 ---> 1

// 1. 通过循环不断的去判断  不确定循环多少次  只能用while  
// 2. 如果 循环过程中遇到4 或者 1 不用继续判断了 遇到4 一定不是 
// 遇到1 循环结束 

// 3.需要取每个数字的平方  每次取一个数字的个位  temp
// 132  第一次 2 剩下 13 第二次 3 剩下1  第三次1 剩下 0 
// 需要一个变量来存 132  13  1

// 4.我们需要一个变量来存放每个数字的平方   newNum


// 注意问题 newNum 如果不是1 并且 4 需要重新判断  也就是 newNum归零
function isHappyNumber(num){
    var newNum,temp; //准备一个变量存放临时数字
    // 132   变量第一次存132 第二次存 13 第三次存 1  0 
    while(num != 4 && num !=1){
        temp = num; // 
        newNum = 0;
        while(temp>0){
            newNum += Math.pow(temp%10,2);
            temp = parseInt(temp/10);
        }
        num = newNum;
        
    }
    return num == 1;  // 一定是布尔类型
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值