在 Kotlin 中查找简化的平方根
Find simplified square root in Kotlin
我想取一个像96这样的数字,调用squareRoot(96)
,得到一个return的“4√6”。
我试过很多不同版本的
- 生成主要因素列表
- 找到完美除数
- 使用递归实现
- 迭代实施
- 哈希映射
- 列表
但似乎没有任何效果。这让我发疯!我可以提供我写的函数来找出因子,但我认为它们不是特别复杂。
我在 python 这里 (python, square root simplification function) 找到了答案并将其翻译成 Kotlin:
fun squareRoot(n: Int): Pair<Int, Int> {
var radical = n
var coefficient = 1
for (i in 2..radical) {
if (radical % (i * i) == 0) {
coefficient *= i
radical /= i * i
for (j in 2..radical) {
if (radical % (j * j) == 0) {
coefficient *= j
radical /= j * j
}
}
}
}
return Pair(coefficient, radical)
}
我想取一个像96这样的数字,调用squareRoot(96)
,得到一个return的“4√6”。
我试过很多不同版本的
- 生成主要因素列表
- 找到完美除数
- 使用递归实现
- 迭代实施
- 哈希映射
- 列表
但似乎没有任何效果。这让我发疯!我可以提供我写的函数来找出因子,但我认为它们不是特别复杂。
我在 python 这里 (python, square root simplification function) 找到了答案并将其翻译成 Kotlin:
fun squareRoot(n: Int): Pair<Int, Int> {
var radical = n
var coefficient = 1
for (i in 2..radical) {
if (radical % (i * i) == 0) {
coefficient *= i
radical /= i * i
for (j in 2..radical) {
if (radical % (j * j) == 0) {
coefficient *= j
radical /= j * j
}
}
}
}
return Pair(coefficient, radical)
}