JS中利用函数解决简单问题

115 阅读2分钟

水仙花数

    封装一个函数, 判断一个数字是否为 水仙花数
        水仙花数:一个四位数字, 各个位置的四次方和!!! 四次方和!!! 四次方和  如果等于自身, 那么就是水仙花数
        
   ` function fn(num) {
        var qianW = parseInt(num / 1000)                           //拿到千位数
        var baiW = parseInt(num / 100) % 10                        //拿到百位数
        var shiW = parseInt(num / 10) % 10                         //拿到十位数
        var geW = num % 10                                         //拿到个位数
        var sum = qianW ** 4 + baiW ** 4 + shiW ** 4 + geW ** 4    //对数字进行重构
        if (sum === num) {                                         //对比两个数字
            return true                                            //输出真
        } else {                                                   
            return false                                           //输出假
        }
        }
         var str = fn(1634)                                        //调用函数验证1634
            console.log(str)                                       // true

        var str1 = fn(1234)                                        //调用函数验证1234
            console.log(str1)                                      // false`

数字加密

    封装一个函数, 对一个四位数字加密
    加密规则:
                1. 每一位上的数字 +5    然后使用 10的余数替代
                2. 一三交换位置, 二四交换位置
            `function fn(num) {
                // 1. 先拿到 四位数字的各个位置上的 值
                var qianW = parseInt(num / 1000)
                var baiW = parseInt(num / 100) % 10
                var shiW = parseInt(num / 10) % 10
                var geW = num % 10
                // 2. 将这四个值, 加 5 后, 替换原本的值
                qianW += 5
                baiW += 5
                shiW += 5
                geW += 5
                // 3. 将 加5后 的值, 使用 10 的余数 去替代
                qianW %= 10
                baiW %= 10
                shiW %= 10
                geW %= 10
                //交换各个数字的位置
                var numT = '' + shiW + geW + qianW + baiW
                // 最后一步, 将加密后的数字, 返回出去
                return numT
                } else {
                console.log('传入的数字, 不是 四位数字', num)
                        }
            }
                var sum = fn(1234)
                console.log('加密后的数字为: ', sum)
                var sum1 = fn(5655)
                console.log('加密后的数字为: ', sum1)`

最大公约数

    约数:整数 x 除以 整数 y (y !== 0),    余数为0,       此时 我们说 y 是 x 的约数
            `function fn1(a, b) {
                var min = a > b ? b : a               // 如果 a > b 条件成立, 说明b的值小, 所以返回 b, 否则, 说明a的值小, 那么返回 a
                for (var i = min; i >= 1; i--) {
                if (a % i === 0 && b % i === 0) {
                return i                               // 返回 ab 的最大公约数
                 }
               }
            }
                var sum = fn1(12, 8)
                console.log(sum)                       // 4
                var sum1 = fn1(20, 10)
                console.log(sum1)                      // 10
                var sum2 = fn1(20, 40)
                console.log(sum2)                      // 20`

最小公倍数

    如何计算最小公倍数:
        一个数学等式:
                   两数的乘积 === 两数的最大公约数 * 两数的最小公倍数
                   a * b === ab的最大公约数   * ab的最小公倍数
       根据数学等式, 做一个变换
                   a * b / ab的最大公约数 === ab的最小公倍数
               `function fn2(a, b) {
                   return a * b / fn1(a, b)
                        }
                    var sum = fn2(8, 12)
                    console.log(sum)    // 这里会输出 数字8和数字12的最小公倍数 24
                    var sum1 = fn2(3, 9)
                    console.log(sum1)   // 9`