Math 如何将平方根设置为仅为整数

Math 如何将平方根设置为仅为整数,math,square-root,Math,Square Root,我似乎找不到任何答案,但是如果我有一个像(X^2-4n)的平方根这样的方程,其中4n是一个常数,我怎么能设置X,这样方程就给出了一个整数 我知道将x设置为n+1是可行的,但我正在寻找一种能够生成所有解的算法。因此,问题是找到所有整数对(x,m),这样: sqrt(x^2 - 4n) = m 我们有: x^2 - 4n = m^2 或 所以 现在,2除以4n,因此它必须除以(x+m)或(x-m)。但如果它把其中任何一个分开,它也会把另一个分开。因此a:=(x+m)/2和b:=(x-m)/2都是

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


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

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

sqrt(x^2 - 4n) = m
我们有:

x^2 - 4n = m^2

所以

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

a*b = n
因此,这只是以所有可能的方式将
n
分解为
a*b
,并从上述等式中恢复
x
m

x = a + b.
m = a - b.
您的解决方案
x=n+1
对应于平凡的因式分解
n=n*1
,其中
a=n
b=1

更新

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

  • [初始化]a:=n
  • [检查]如果
    n%a=0
    • b:=n/a
    • 打印(a+b),打印(a-b)
  • [减量]a:=a-1
  • [结束?]如果
    a*a>n
    转到步骤2

  • 因此,问题是找到所有整数对
    (x,m)
    ,以便:

    sqrt(x^2 - 4n) = m
    
    我们有:

    x^2 - 4n = m^2
    

    所以

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

    a*b = n
    
    因此,这只是以所有可能的方式将
    n
    分解为
    a*b
    ,并从上述等式中恢复
    x
    m

    x = a + b.
    m = a - b.
    
    您的解决方案
    x=n+1
    对应于平凡的因式分解
    n=n*1
    ,其中
    a=n
    b=1

    更新

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

  • [初始化]a:=n
  • [检查]如果
    n%a=0
    • b:=n/a
    • 打印(a+b),打印(a-b)
  • [减量]a:=a-1
  • [结束?]如果
    a*a>n
    转到步骤2

  • 因此,问题是找到所有整数对
    (x,m)
    ,以便:

    sqrt(x^2 - 4n) = m
    
    我们有:

    x^2 - 4n = m^2
    

    所以

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

    a*b = n
    
    因此,这只是以所有可能的方式将
    n
    分解为
    a*b
    ,并从上述等式中恢复
    x
    m

    x = a + b.
    m = a - b.
    
    您的解决方案
    x=n+1
    对应于平凡的因式分解
    n=n*1
    ,其中
    a=n
    b=1

    更新

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

  • [初始化]a:=n
  • [检查]如果
    n%a=0
    • b:=n/a
    • 打印(a+b),打印(a-b)
  • [减量]a:=a-1
  • [结束?]如果
    a*a>n
    转到步骤2

  • 因此,问题是找到所有整数对
    (x,m)
    ,以便:

    sqrt(x^2 - 4n) = m
    
    我们有:

    x^2 - 4n = m^2
    

    所以

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

    a*b = n
    
    因此,这只是以所有可能的方式将
    n
    分解为
    a*b
    ,并从上述等式中恢复
    x
    m

    x = a + b.
    m = a - b.
    
    您的解决方案
    x=n+1
    对应于平凡的因式分解
    n=n*1
    ,其中
    a=n
    b=1

    更新

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

  • [初始化]a:=n
  • [检查]如果
    n%a=0
    • b:=n/a
    • 打印(a+b),打印(a-b)
  • [减量]a:=a-1
  • [结束?]如果
    a*a>n
    转到步骤2

  • 这个问题属于一个叫做A的问题。@Robert Dodier:这个问题比丢番图方程简单得多。这就像x*y=100。@Pang这个问题和我的答案现在更适合这个网站了吗?这个问题属于一个叫做A的问题。@Robert Dodier:这个问题比丢番图方程简单得多。这就像x*y=100。@Pang这个问题和我的答案现在更适合这个网站了吗?这个问题属于一个叫做A的问题。@Robert Dodier:这个问题比丢番图方程简单得多。这就像x*y=100。@Pang这个问题和我的答案现在更适合这个网站了吗?这个问题属于一个叫做A的问题。@Robert Dodier:这个问题比丢番图方程简单得多。就像x*y=100。@Pang这个问题和我的答案现在更适合这个网站了吗?