三角平方数

三角平方数

1 三角数和平方数

  有些数是”有形“的,它们可以用图形来展示,三角数和平方数就是这样,如下图所示:

在这里插入图片描述

因此我们有三角数和平方数的通项公式:

  • 三角数 1 , 3 , 6 , 10 , 15 , 21 , 28 , 36 , 45 , 55 , 66 , 78 , 91 , 105 , ⋯ 1,3,6,10,15,21,28,36,45,55,66,78,91,105,\cdots 1,3,6,10,15,21,28,36,45,55,66,78,91,105,,第 m m m个三角数为 m ( m + 1 ) 2 \cfrac{m(m+1)}{2} 2m(m+1)
  • 平方数 1 , 4 , 9 , 16 , 25 , 36 , 49 , 64 , 81 , 100 , 121 , 144 , 169 , ⋯ 1,4,9,16,25,36,49,64,81,100,121,144,169,\cdots 1,4,9,16,25,36,49,64,81,100,121,144,169,,第 n n n个平方数为 n 2 n^2 n2

不难发现,有一些数既是三角数又是平方数,我们就叫它三角平方数,例如 36 36 36,它既可以表示为 6 ∗ 6 6*6 66的正方形,又可以表示成 8 8 8行的三角形。

  那么问题来了:

  • 三角平方数有多少个呢?
  • 能不能给出一个寻找所有三角平方数的公式呢?

2 分析

  三角数具有形式 m ( m + 1 ) 2 \cfrac{m(m+1)}{2} 2m(m+1),平方数具有形式 n 2 n^2 n2,那么三角平方数就对应下面方程的整数解
n 2 = m ( m + 1 ) 2 n^2=\cfrac{m(m+1)}{2} n2=2m(m+1)
对这个方程进行一些简单的代数运算可得:
8 n 2 = ( 2 m + 1 ) 2 − 1 8n^2=(2m+1)^2-1 8n2=(2m+1)21
看到这个形式应该想到代换,我们令:
x = 2 m + 1 , y = 2 n x = 2m+1,y=2n x=2m+1,y=2n
带入到原方程中得:
x 2 − 2 y 2 = 1 x^2-2y^2=1 x22y2=1
那么这个方程的解就应该就可以得到三角平方数:
m = x − 1 2 , n = y 2 m=\cfrac{x-1}{2},n=\cfrac{y}{2} m=2x1,n=2y

3 推导

  通过实验,我们可以得到一组解 ( x , y ) = ( 3 , 2 ) (x,y)=(3,2) (x,y)=(3,2),它给出了三角平方数 ( m , n ) = ( 1 , 1 ) (m, n)=(1,1) (m,n)=(1,1)。进一步实验我们可以得到另一组解 ( x , y ) = ( 17 , 12 ) (x,y)=(17,12) (x,y)=(17,12),相应的三角平方数为 ( m , n ) = ( 8 , 6 ) (m, n)=(8, 6) (m,n)=(8,6)

  对于 y = 1 , 2 , 3 ⋯ y=1,2,3\cdots y=1,2,3我可以通过计算机验证 2 y 2 + 1 2y^2+1 2y2+1是否为平方数可以找到更多的解。也就是暴力尝试,下一个解是 ( x , y ) = ( 99 , 70 ) (x,y)=(99,70) (x,y)=(99,70)

  那要如何求解方程 x 2 − 2 y 2 = 1 x^2-2y^2=1 x22y2=1呢?看到这个形式通常会想到使用因式分解,但如果限制在整数范围内, x 2 − 2 y 2 x^2-2y^2 x22y2就没办法分解。不过我们可以把它分解成这样:
x 2 − 2 y 2 = ( x + y 2 ) ( x − y 2 ) (1) x^2-2y^2=(x+y\sqrt 2)(x - y\sqrt 2) \tag{1} x22y2=(x+y2 )(xy2 )(1)
那么解 ( x , y ) = ( 3 , 2 ) (x,y)=(3, 2) (x,y)=(3,2)按照 ( 1 ) (1) (1)式写成:
1 = 3 2 − 2 ∗ 2 2 = ( 3 + 2 2 ) ( 3 − 2 2 ) \begin{aligned} 1 = 3^2-2*2^2 &=(3+2\sqrt 2)(3 - 2\sqrt 2) \end{aligned} 1=32222=(3+22 )(322 )
平方得
1 = 1 2 = ( 3 + 2 2 ) 2 ( 3 − 2 2 ) 2 = ( 17 + 12 2 ) ( 17 − 12 2 ) = 1 7 2 − 2 ∗ 1 2 2 \begin{aligned} 1 =1^2 &=(3+2\sqrt 2)^2(3 - 2\sqrt 2)^2\\ &= (17+12\sqrt2)(17-12\sqrt2)\\ &=17^2 - 2*12^2 \end{aligned} 1=12=(3+22 )2(322 )2=(17+122 )(17122 )=1722122
我们看到 ( x , y ) = ( 17 , 12 ) (x,y)=(17,12) (x,y)=(17,12)也是一组解,而且是通过对解 ( x , y ) = ( 3 , 2 ) (x,y)=(3, 2) (x,y)=(3,2)平方得到的。那么再来试试三次方:
1 = 1 3 = ( 3 + 2 2 ) 3 ( 3 − 2 2 ) 3 = ( 99 + 70 2 ) ( 99 − 70 2 ) = 9 9 2 − 2 ∗ 7 0 2 \begin{aligned} 1 =1^3 &=(3+2\sqrt 2)^3(3 - 2\sqrt 2)^3\\ &= (99+70\sqrt2)(99-70\sqrt2)\\ &=99^2 - 2*70^2 \end{aligned} 1=13=(3+22 )3(322 )3=(99+702 )(99702 )=9922702
( x , y ) = ( 99 , 70 ) (x,y)=(99,70) (x,y)=(99,70)也是一组解,再来四次方:
1 = 1 4 = ( 3 + 2 2 ) 4 ( 3 − 2 2 ) 4 = ( 577 + 408 2 ) ( 577 − 408 2 ) = 57 7 2 − 2 ∗ 40 8 2 \begin{aligned} 1 =1^4 &=(3+2\sqrt 2)^4(3 - 2\sqrt 2)^4\\ &= (577+408\sqrt2)(577-408\sqrt2)\\ &=577^2 - 2*408^2 \end{aligned} 1=14=(3+22 )4(322 )4=(577+4082 )(5774082 )=577224082
( x , y ) = ( 577 , 408 ) (x,y)=(577,408) (x,y)=(577,408)也是一组解,其对应的三角平方数是 ( m , n ) = ( 288 , 204 ) (m, n)=(288, 204) (m,n)=(288,204)

  我们注意到,在求下一个解的时候不必对初始解自乘得到更高次幂,只需要用当前解再乘以初始解就好了。比如求 ( x , y ) = ( 577 , 408 ) (x,y)=(577,408) (x,y)=(577,408)的下一个解:
( 3 + 2 2 ) ( 577 + 408 2 ) = 3363 + 2378 2 (3+2\sqrt2)(577+408\sqrt{2})=3363+2378\sqrt2 (3+22 )(577+4082 )=3363+23782
由此得到解 ( x , y ) = ( 3363 , 2378 ) (x,y)=(3363,2378) (x,y)=(3363,2378),继续往下计算,可以得到越来越大的解,其对应的三角平方数也越来越大,如下图所示,通过将 3 + 2 2 3+2\sqrt2 3+22 自乘我们就可以持续得到三角平方数,因此,三角平方数是有无穷多个的。

在这里插入图片描述

4 三角平方数定理

  定理内容如下(证明就略了吧):

  1. 方程 x 2 − 2 y 2 = 1 x^2-2y^2=1 x22y2=1的每个正整数解都可以通过 3 + 2 2 3+2\sqrt2 3+22 自乘得到,即解 ( x k , y k ) (x_k,y_k) (xk,yk)可以通过展开下式得到:
    x k + y k 2 = ( 3 + 2 2 ) k ,        k = 1 , 2 , 3 , ⋯ x_k+y_k\sqrt2=(3+2\sqrt2)^k,\ \ \ \ \ \ k=1,2,3,\cdots xk+yk2 =(3+22 )k,      k=1,2,3,
  2. 每个三角平方数 n 2 = 1 2 m ( m + 1 ) n^2=\frac{1}{2}m(m+1) n2=21m(m+1)由:
    m = x k − 1 2 , n = y k 2 ,        k = 1 , 2 , 3 , ⋯ m=\cfrac{x_k-1}{2},n=\cfrac{y_k}{2},\ \ \ \ \ \ k=1,2,3,\cdots m=2xk1,n=2yk,      k=1,2,3,
    给出,其中 ( x k , y k ) (x_k, y_k) (xk,yk)是由上式得到的解。

5 生成三角平方数

  既然我们知道了三角平方数定理,那么我们就可以写段小程序生成一下前 n n n个三角平方数了。下面生成一下前20个。

x, y = 1, 0    #方程的解
m, n = 1, 1	   #对应的三角平方数
for i in range(20):
    x, y = 3*x + 4*y, 2*x + 3*y
    m, n = (x - 1)//2, y//2
    print('第{}个三角平方数为'.format(i+1), n**2)

输出结果就是这样子:

1个三角平方数为 12个三角平方数为 363个三角平方数为 12254个三角平方数为 416165个三角平方数为 14137216个三角平方数为 480249007个三角平方数为 16314328818个三角平方数为 554206930569个三角平方数为 188267213102510个三角平方数为 6395543176179611个三角平方数为 217260200777004112个三角平方数为 7380451283241960013个三角平方数为 250718083429449636114个三角平方数为 8517034385318045667615个三角平方数为 289328451017384103062516个三角平方数为 9828650300205741458457617个三角平方数为 333884781755977825484496118个三角平方数为 11342253929403040325014410019个三角平方数为 385302748817947393225005444120个三角平方数为 130889512058808083293251706896

最后说明一下, x k , y k x_k,y_k xk,yk是按指数增长的。

6 参考资料

[1] 《数论概论》第四版P161-P166

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值