julia - 如何在 Julia 中分解一个数字?
问题描述
我正在尝试构建一个函数来分解一个数字。在这个例子中,我使用了数字 95 和一个素数列表。结果应该是 (5, 19)。我究竟做错了什么?
function factorize(number, primes)
global factor = Int64[]
for i in primes
while number % primes[i] == 0
push!(factor, primes[i])
number = number ÷ primes[i]
end
if number ÷ primes[i] != 1
break
end
end
return factor
end
number = 95
primes = (2,3,5,7,11,13,17,19,23, 27, 31)
answer = factorize(number, primes)
println(answer)
解决方案
这是一个固定的功能:
function factorize(number, primes)
factor = Int64[]
for p in primes
while number % p == 0
push!(factor, p)
number = number ÷ p
end
if number == 1
break
end
end
if number > 1
@warn "factorization failed, not enough primes passed; printing only factors found in primes vector"
end
return factor
end
变化:
- 你不需要
global
限定符 - 写作返回不是索引
p in primes
的元素primes
primes
- 终止条件应该是
number == 1
primes
如果向量不包含所需的所有素数,则错误处理
请注意,您可以将结果与factor
Primes.jl 包中的函数进行比较(但我猜您希望将此代码作为算法问题)。
推荐阅读
- c# - Adding lines to a textbox through code while keeping the previous lines? C#
- timestamp - Dynamically renaming files using batch with no fixed position for string
- c++ - 功能不明确,不是
- git - 仅显示文件中的更改而不显示提交消息或其他任何内容
- python - Python - 如何从 sqlite3 列创建嵌套字典并使用 Matplotlib 绘制它?
- jquery - 无法显示警报消息
- plot - 如何使用 Table[Plot[ 方法在 Mathematica 中绘制函数并组合成一个图形?
- java - 未正确检测颜色 Java
- c++ - 如何覆盖静态二进制文件的 C++ 启动函数?
- javascript - 如何在 React 中过滤 api 数据