You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift实现质因数分解并返回符合要求格式的字符串

解决思路

  • 你现有逻辑输出的numberArr已经是按升序排列的质因数列表,相同质因数连续排列,只需遍历数组统计每个质因数的出现次数即可得到对应指数
  • 遍历统计得到的(质数, 指数)元组数组,按规则拼接字符串:
    • 指数为1时,格式为(质数)
    • 指数大于1时,格式为(质数xx指数)
  • 所有片段拼接完成后即为最终返回结果

完整实现代码

func factors(_ number: Int) -> String {
    var changedNumber = number
    var numberArr = [Int]()
    while changedNumber >= 2 {
        for i in 2...changedNumber {
            if changedNumber % i == 0 {
                numberArr.append(i)
                changedNumber /= i
                break
            }
        }
    }
    
    // 统计质因数和对应指数
    var factorTuples = [(prime: Int, count: Int)]()
    var currentPrime: Int?
    var currentCount = 0
    for num in numberArr {
        if num == currentPrime {
            currentCount += 1
        } else {
            if let prime = currentPrime {
                factorTuples.append((prime, currentCount))
            }
            currentPrime = num
            currentCount = 1
        }
    }
    // 加入最后一组质因数统计结果
    if let prime = currentPrime {
        factorTuples.append((prime, currentCount))
    }
    
    // 按要求拼接结果字符串
    var result = ""
    for tuple in factorTuples {
        if tuple.count == 1 {
            result += "(\(tuple.prime))"
        } else {
            result += "(\(tuple.prime)xx\(tuple.count))"
        }
    }
    return result
}

调用factors(86240)即可得到示例要求的输出"(2xx5)(5)(7xx2)(11)"。

内容的提问来源于stack exchange,提问作者pakobongbong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:18:05