【发布时间】:2021-08-30 17:49:00
【问题描述】:
我正在尝试解决以下编码挑战:
给定一个正数n > 1,求n 的素因子分解。结果将是一个格式如下的字符串:
"(p1xxn1)(p2xxn2)...(pkxxnk)"
p(i) 按递增顺序排列,如果 n(i) 为 1,则 n(i) 为空。
示例:n = 86240 应返回 "(2xx5)(5)(7xx2)(11)"
我相信我已经知道如何找到一个数字的主要因素......我的问题是我不知道如何将它们转换为问题所需的形式(即 p(i) 的字符串是递增的顺序)。我试图将包含素数因子的整数数组转换为某种包含因子 p 和 n 的元组数组,但我已经苦苦挣扎了几个小时。
这是我目前所拥有的:
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
}
}
}
}
任何见解或资源将不胜感激。
【问题讨论】:
标签: swift string algorithm prime-factoring