【发布时间】:2015-12-08 18:01:15
【问题描述】:
我有这个定理(不确定这是否是正确的词),我想得到所有的解决方案。
pairCube limit = do
m <- natural exists "m"
n <- natural exists "n"
a <- natural exists "a"
constrain $ m^3 .== n^2
constrain $ m .< limit
return $ m + n .== a^2
res <- allSat (pairCube 1000)
-- Run from ghci
extractModels res :: [[Integer]]
这是试图解决问题:
有无穷多对整数 (m, n) 使得 m^3 = n^2 并且 m + n 是一个完美的正方形。最大 m 小于 1000 的对是什么?
我知道实际答案,只是通过暴力破解,但我想使用 SBV。
但是,当我运行代码时,它只给出以下值(形式为 [m, n, a]): [[9,27,6],[64,512,24],[]]
但是,还有其他几个 m 值小于 1000 的解决方案不包括在内。
【问题讨论】:
-
@ThomasM.DuBuisson 另外,如果我将限制更改为 4097,我会得到 m 为 225 和 576 的解决方案,但如果是 4096,则不会显示。
标签: haskell symbolic-math proof sbv