【问题标题】:How to set a square root to only be whole如何将平方根设置为整数
【发布时间】:2015-03-29 20:46:37
【问题描述】:

我似乎找不到任何答案,但如果我有一个像 (X^2-4n) 的平方根这样的方程,其中 4n 是一个常数,我怎么能设置 x 所以方程给出一个整数。

我知道将 x 设置为 n+1 可行,但我正在寻找一种能够生成所有解决方案的算法。

【问题讨论】:

  • 这个问题属于math.stackexchange.com
  • 此类问题称为Diophantine equation
  • @Robert Dodier:这个要简单得多,可以称为丢番图方程。这就像 x*y=100。
  • @Pang 这个问题和我的回答现在更适合这个网站吗?

标签: math square-root


【解决方案1】:

所以,问题是找到所有整数对(x, m),这样:

sqrt(x^2 - 4n) = m

我们有:

x^2 - 4n = m^2

x^2 - mˆ2 = 4n

所以

(x + m)(x - m) = 4n

现在,2 除以 4n,因此它必须除以 (x+m)(x-m)。但是,如果它划分其中任何一个,它也会划分另一个。因此a := (x+m)/2b := (x-m)/2 都是整数。因此

a*b = n

因此,只需以所有可能的方式将n 分解为a*b 并从上面的等式中恢复xm

x = a + b.
m = a - b.

您的解决方案 x = n+1 对应于琐碎分解 n = n*1,其中 a=nb=1

更新

这是一个打印所有对的算法(x, m)

  1. [初始化] a := n.
  2. [检查] if n % a = 0 then
    • b := n / a.
    • print(a + b), print(a - b)
  3. [递减] a := a - 1。
  4. [End?] 如果a * a > n 转到第 2 步。

【讨论】:

    猜你喜欢
    • 2015-03-04
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2010-09-22
    • 2015-12-28
    • 2013-03-01
    • 1970-01-01
    相关资源
    最近更新 更多