个位数自定义幂函数

18 篇文章 0 订阅
4 篇文章 0 订阅

个位数自定义幂函数
直接上代码了 ,不废话了

 
// 三个参数    底数         幂指数       结果位数
func maxPow(number:Int, powIndex:Int,rangeNumber:Int) {
    
//    我们需要计时,看看需要多久
    let startTime = CFAbsoluteTimeGetCurrent()
    
    
//    定义保存数据的空间大小
    let arrLength = rangeNumber
    
//    从0开始遍历整个空间
    let rangeLength = arrLength - 2
    
    
//    初始化结果 , 除了以第一位是1之外,其他都是 0
    var arr = Array<Int>(repeating: 0, count: arrLength)
//    任何非0数的 0次幂是 1
    arr[0] = 1
    
//    初始化 进位
    var  jw  = Array<Int>(repeating: 0, count: arrLength)
    
// 定义幂指数
    let powNumber  = powIndex
    
//    系统有 幂函数公式我们看下系统的计算结果
    print("System.math ==    \(pow(Decimal(number), powIndex))")
  
//  开始幂运算了 , 多少次幂运算就 有多少次循环
    
    for _ in 1...powNumber {
//      每循环移位 ,都要✖️ 底数
        for i in 0...rangeLength {
//            在第 i 位  ,相当于当前的数值 X  底数 + 当前的进位
//  若超过了 10 ,就要向前进位
            let aiValue = arr[i] * number + jw[i]
//            对10 求余数 , 并代替之前的值
            let v1 = aiValue % 10
//            获取进位
            let v2 = aiValue / 10
//            余数给当前位数
            arr[i] = v1
//            进位给下一位
            jw[i+1] = v2
            
        }
        
    }
    
//    格式化计算结果
    let  numRusult = NSMutableString()
//    加一个标记为
    var start:Bool = false
    
//    翻转数组,最高位在最后面
    for item in arr.reversed() {
        if  item != 0 && !start {
            start = true
        }
//        把每一位拼接起来
        if start {
            numRusult.append("\(item)")
        }
    }
    
    //    我们需要计时,看看需要多久
    let endTime = CFAbsoluteTimeGetCurrent()
    
    print("用时 :   \(endTime-startTime) ")
    
// 结果输出
    
    print("\(number) ^ \(powNumber) === \(numRusult)")
    
    
    
    
}


//调用看看
// 2的十次方
/*
 
 
 用时 :   217.8534220457077
 2 ^ 100000 ===
 */
maxPow(number: 2, powIndex: 100, rangeNumber: 40)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值