第一章 什么是数论
习题1.1
习题1.2
习题1.3
习题1.4
习题1.5
习题1.6
代码-矩阵快速幂
引申:∣ x 2 − D y 2 ∣= 1
第二章 勾股数组
习题2.1
习题2.2
习题2.3
习题2.4
习题2.5
习题2.6
习题2.7
习题2.8
习题2.9
代码-本原勾股数组(简称PPT)
其他
第一章 什么是数论
习题1.1
既是平方数又是三角数的前两个数是1与36,求下一个这样的数,如果可能的话,再求下一个。你能给出求三角平方数的有效方法么?你认为有无穷多个三角平方数吗?
解:
三角数 2 1 × 2 2 8 × 9 2 49 × 50 2 288 × 289 2 1681 × 1682 2 9800 × 9801 平方数 1 2 × 1 2 2 2 × 3 2 7 2 × 5 2 1 2 2 × 1 7 2 4 1 2 × 2 9 2 7 0 2 × 9 9 2 x n 0 0 + 1 = 1 1 + 1 = 2 2 + 3 = 5 5 + 7 = 12 12 + 17 = 29 29 + 41 = 70 y n 1 2 × 0 + 1 = 1 2 × 1 + 1 = 3 2 × 2 + 3 = 7 2 × 5 + 7 = 17 2 × 12 + 17 = 41 2 × 29 + 41 = 99
构建数对 : ( x 0 , y 0 ) = ( 0 , 1 ) , ( x n , y n ) = ( x n − 1 + y n − 1 , 2 x n − 1 + y n − 1 ) = ( x n − 1 , y n − 1 ) ( 1 1 2 1 ) 可得 : 2 x n 2 − y n 2 即 : ∣ 2 x n 2 − y n 2 ∣ ⇒ 2 2 x n 2 × y n 2 = 2 ( x n − 1 + y n − 1 ) 2 − ( 2 x n − 1 + y n − 1 ) 2 = ( − 1 ) 1 × ( 2 x n − 1 2 − y n − 1 2 ) = ( − 1 ) 2 × ( 2 x n − 2 2 − y n − 2 2 ) = ⋯ = ( − 1 ) n × ( 2 x 0 2 − y 0 2 ) = ( − 1 ) n + 1 = 1 = ( x n y n ) 2 是一个三角平方数
另外 ∵ T n = 2 n ( n + 1 ) 中 ( n , n + 1 ) = 1
∴ ( n , 2 n + 1 ) 或( 2 n , n + 1 ) 必然分别是两个数的平方,即( a 2 , b 2 )
不妨设 2 ≤ a < b , 则有 ∣ 2 a 2 − b 2 ∣= 1 , 可得a < b < 2 a ,
令a ′ = b − a < a , b ′ = 2 a − b ⇒ b ′ − a ′ = 3 a − 2 b 且有 ( a , b ) = ( a ′ + b ′ , 2 a ′ + b ′ )
∵ a ≥ 2 ∴ 9 a 2 − 4 b 2 = a 2 ± 4 ≥ 0 ⇒ 3 a − 2 b ≥ 0 ⇒ b ′ ≥ a ′
2 a ′ 2 − b ′ 2 = − 1 × ( 2 a 2 − b 2 ) ⇒ ( a ′ , b ′ ) 也是一个三角平方数数对 ⇒
若( a , b ) 其中b > a 是一个三角平方数数对,总能找到一个更小的数对 ( a ′ , b ′ ) 也是三角平方数。
而当a ′ = b ′ 时, a ′ = b ′ = 1 是唯一解 .即每一个三角平方数都可以(1, 1)为起点通过迭代矩阵( 1 1 2 1 ) 构造出来
可用矩阵快速幂求得第 n 个三角平方数
习题1.2
试将前几个奇数加起来,观察所得到的数是否满足某些模式,一旦发现模式,将他表示成公式,给出你的公式成立的几何证明。
解:
⎩ ⎨ ⎧ 1 1 + 3 1 + 3 + 5 = 1 2 = 2 2 = 3 2
猜想:1 + 3 + 5 + ⋯ + ( 2 n − 1 ) = ( n − 1 ) 2 + 2 n − 1 = n 2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ⋯⋯ 1 1 ⋮ 1 1 1 ⋮ 1 ⋯ ⋯ ⋱ ⋯ 1 1 ⋮ 1
习题1.3
连续的奇数 3 , 5 , 7 都是素数,存无穷多个这样的“素数三元组”吗?换句话说,存在无穷多个素数 p 使得 p + 2 和 p + 4 都是素数吗?
答:不存在
证:
令 p = 3 k + m , p > 3 ,则 p + 2 = 3 k + m + 2 , p + 4 = 3 k + m + 4 , 则有:
⎩ ⎨ ⎧ p p + 2 p + 4 ≡ m + 0 mod 3 ≡ m + 2 mod 3 ≡ m + 1 mod 3
即 : p , p + 2 , p + 4 中必有一个数能被 3 整除
习题1.4
尽管没有人保证,但是人们普遍认为有无穷多个素数形如N 2 + 1 。
(a) 你认为存在无穷多个形如N 2 − 1 的素数吗?
(b) 你认为存在无穷多个形如N 2 − 2 的素数吗?
(c) 形如N 2 − 3 的数如何呢?形如N 2 − 4 的数又如何呢?
(d) 你认为 a 取哪些值时存在无穷多个形如N 2 − a 的素数?
(a) N 2 − 1 = ( N − 1 ) ( N + 1 ) ⇒ 不存在无穷多个形如N^2-1的素数
(b)
⎩ ⎨ ⎧ 2 2 − 2 3 2 − 2 5 2 − 2 = 2 = 7 = 23
猜想:存在无穷多个形如N 2 − 2 的素数
(c)
⎩ ⎨ ⎧ 4 2 − 3 8 2 − 3 1 0 2 − 3 = 13 = 61 = 97
猜想:存在无穷多个形如N 2 − 3 的素数
N 2 − 4 = ( N − 2 ) ( N + 2 ) ⇒ 不存在无穷多个形如N^2-4的素数
(d) 答: a 不是平方数
习题1.5
通过重排和式中的项也可推导出前n个正整数和的公式,请补充推导细节
1 + 2 + 3 + ⋯ + n = ( 1 + n ) + ( 2 + n − 1 ) + ( 3 + n − 2 ) + … = ( 1 + n ) + ( 1 + n ) + ( 1 + n ) + …
特别地,在第二行有多少个n + 1 呢?
答: n 为偶数时有 2 n 个,n为奇数时有 2 n − 1 个且多出一个 2 n + 1
习题1.6
为以下结论填上易于判断的准则:
(a) M是三角数但且仅当________是一个奇平方数
(b) N是奇平方数但且仅当_________是一个三角数
(c) 证明(a),(b)中你所填的准则的正确性
(a) 答:8 M + 1
(b) 答:8 N − 1
(c) 证: 令 N = ( 2 n + 1 ) 2 , M = 2 n ( n + 1 ) , n ∈ N
则 8 N − 1 = 8 ( 2 n + 1 − 1 ) ( 2 n + 1 + 1 ) = 2 n ( n + 1 ) = M ⇔ 8 M + 1 = N
可得:对于任意一个整数n都分别对应一个奇平方数和一个三角数
引申:任意一个奇平方数N,N-1都可以被8整除
代码-矩阵快速幂
public int [ ] [ ] mmul ( int [ ] [ ] x , int [ ] [ ] y ) {
int m = x . length ;
int n = x [ 0 ] . length ;
int k = y . length ;
int [ ] [ ] z = new int [ m ] [ n ] ;
for ( int i = 0 ; i < m ; i ++ ) {
for ( int j = 0 ; j < n ; j ++ ) {
for ( int l = 0 ; l < k ; l ++ ) {
z [ i ] [ j ] += x [ i ] [ l ] * y [ l ] [ j ] ;
}
}
}
return z ;
}
public int [ ] [ ] qmpow ( int [ ] [ ] f0 , int [ ] [ ] f , int n ) {
while ( n != 0 ) {
if ( ( n & 1 ) == 1 ) f0 = mmul ( f0 , f ) ;
if ( n > 1 ) f = mmul ( f , f ) ;
n >>= 1 ;
}
return f0 ;
}
引申:∣ x 2 − D y 2 ∣= 1
我也来自己写个方程猜想一下。
假设( a , b ) 是方程∣ x 2 − D y 2 ∣= 1 的一组最小正整数解,即∣ a 2 − D b 2 ∣= 1 ,那么方程∣ x 2 − D y 2 ∣= 1 的所有解都可以通过迭代矩阵( a D b b a ) 来得到, D = N 2 ± 1 时,( N , 1 ) 是该方程的第一组解(这很显然), 特别的如果方程的第一组解( a , b ) 不满足x 2 − D y 2 = − 1 ,则方程x 2 − D y 2 = − 1 没有正整数解.
当D = N 2 − 2 时,( N 2 − 1 , N ) 是第一组解,当D = N 2 + 2 时( N 2 + 1 , N ) 是第一组解
假设( x i , y i ) 是方程∣ x 2 − D y 2 ∣= 1 的一组解,令( x i + 1 , y i + 1 ) = ( x i , y i ) ( a D b b a ) = ( a x i + D b y i , b x i + a y i ) ,则有:
x i + 1 2 − D y i + 1 2 ⇒∣ x i + 1 2 − D y i + 1 2 ∣ = ( a x i + D b y i ) 2 − D ( b x i + a y i ) 2 = a 2 x i 2 + 2 D ab x i y i + D 2 b 2 y i 2 − D b 2 x i 2 − 2 D ab x i y i − D a 2 y i 2 = ( a 2 − D b 2 ) x i 2 − D ( a 2 − D b 2 ) y i 2 = 1
( a D b b a ) 这个迭代矩阵如何得到的呢,其实也很简单,用待定系数法就可以。
假定 ( x i + 1 , y i + 1 ) = ( x i , y i ) ( a c b d ) = ( a x i + c y i , b x i + d y i )
x i + 1 2 − D y i + 1 2 = ( a x i + c y i ) 2 − D ( b x i + d y i ) 2 = a 2 x i 2 + 2 a c x i y i + c 2 y i 2 − D b 2 x i 2 − 2 D b d x i y i − D d 2 y i 2 = ( a 2 − D b 2 ) x i 2 + 2 ( a c − D b d ) x i y i + ( c 2 − D d 2 ) y i 2 = ± ( x i 2 − D y i 2 )
由此我们可以得到:
⎩ ⎨ ⎧ a 2 − D b 2 = ± 1 a c − D b d = 0 c 2 − D d 2 = ∓ D ⇒ a 2 c 2 = a 2 D ( d 2 ∓ 1 ) = D 2 b 2 d 2 ⇒ d 2 ( a 2 − D b 2 ) ∓ a 2 = 0 ⇒ d = a ⇒ c = a D b d = D b
显然∣ a 2 − D b 2 ∣= 1 成为了最重要的条件.
D 2 3 5 6 7 8 10 11 12 13 14 15 17 18 19 20 21 22 23 24 x 0 1 2 2 5 8 3 3 10 7 18 15 4 4 17 170 9 55 197 24 5 y 0 1 1 1 2 3 1 1 3 2 5 4 1 1 4 39 2 12 42 5 1 ± 1 − + − + + + − + + − + + − + + + + + + + D 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 x 0 5 26 127 70 11 1520 17 23 35 6 6 37 25 19 32 13 3482 199 161 24335 y 0 1 5 24 13 2 273 3 4 6 1 1 6 4 3 5 2 531 30 24 3588 ± 1 − + + − + + + + + + − + + + − + + + + + D 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 65 66 67 68 x 0 48 7 7 50 649 182 485 89 15 151 99 530 31 29718 63 8 8 65 48842 33 y 0 7 1 1 7 90 25 66 12 2 20 13 69 4 3805 8 1 1 8 5967 4 ± 1 + + − + + − + + + + − + + − + + − + + + D 69 70 71 72 73 74 75 76 77 78 79 80 82 83 84 85 86 87 88 89 x 0 7775 251 3480 17 1068 43 26 57799 351 53 80 9 9 82 55 378 10405 28 197 500 y 0 936 30 413 2 125 5 3 6630 40 6 9 1 1 9 6 41 1122 3 21 53 ± 1 + + + + − − + + + + + + − + + − + + + −
补充:这方程叫佩尔方程,后面会学,可以用连分式来解。
第二章 勾股数组
习题2.1
(a) 我们证明了在任何本原勾股数组( a , b , c ) 中,a 或 b 是偶数。用相同的论证方法证明a 或b 必是3的倍数。
(b) 通过考察前面的本原勾股数组表,给出当a , b 或 c 是5 的倍数时的猜测。试证明你的猜测是正确的。
(a) 令 s = 3 p + m , t = 3 q + n
1. 当m = 0 或 n = 0 时, a = s t ≡ 0 mod 3 , 得证
2. 当m = 0 且 n = 0 时 , b = 2 ( s + t ) ( s − t )
2.1 s ≡ t mod 3 时 ⇒ s − t ≡ 0 mod 3 ⇒ b ≡ 0 mod 3
2.2 s ≡ t mod 3 时 ⇒ s + t ≡ 0 mod 3 ⇒ b ≡ 0 mod 3
(b) 令 s = 5 p + m , t = 5 q + n
⎩ ⎨ ⎧ m = 0 或 n = 0 , m + n = 5 或 m = n , m = 1 , n = 2 , m = 1 , n = 3 , m = 2 , n = 4 , m = 3 , n = 4 , 5 ∣ a = s t 5 ∣ b = 2 ( s + t ) ( s − t ) 5 ∣ c = 2 s 2 + t 2 = 5 x + 5 5 ∣ c = 2 s 2 + t 2 = 5 x + 10 5 ∣ c = 2 s 2 + t 2 = 5 x + 20 5 ∣ c = 2 s 2 + t 2 = 5 x + 25
习题2.2
非零整数 d 整除 m 是指对某个整数 k 满足 m = d k . 证明: 若 d 整除 m 与 n, 则 d 也整除 m - n 与 m + n.
证:
令 m = d k , n = d p , 则 m − n = d ( k − p ) , m + n = d ( k + p )
习题2.3
对下述每个问题,从搜集数据开始,进而分析数据,形成猜想;最后设法证明你得猜想是正确的。
(a) 哪些奇数a可出现在本原勾股数组( a , b , c ) 中?
(b) 哪些偶数b可出现在本原勾股数组( a , b , c ) 中?
(c) 哪些奇数c可出现在本原勾股数组( a , b , c ) 中?
(a) 答:所有大于1的奇数,令 t = 1 , s ∈ { x : x = 2 n + 1 , n ∈ N } , 则 ( s , t ) = 1 , 则 a 可以取遍所有大于1的奇数
(b) 答:所有大于0且能被4整除的偶数,令 s = t + 2 = 2 n + 3 , n ≥ 0 , 则 :
b = 2 ( s + t ) ( s − t ) = 2 ( t + 1 ) = 4 ( n + 1 )
假设 ( s , t ) = d > 1 ,则有 s = d p , t = d q ⇒ d ( p − q ) = 2 ⇒ d = 2 , 显然 2 ∤ s 且 2 ∤ t
任取 s = t + 2 k = 2 n + 2 k + 1 , 则 b = 2 ( s + t ) ( s − t ) = 4 nk + 2 k ( k + 1 ) ≡ 0 mod 4
(c) 答: c的质因数全部模4余1。质因数部分不证,困难级别。
令 s = t + 2 k , 则c = 2 s 2 + t 2 = t 2 + 2 k ( k + t )
∵ t 是奇数 ∴ 4 ∣ 2 k ( k + t ) ∴ c ≡ t 2 ≡ 1 mod 4
习题2.4
下面是两个本原勾股数组的例子:
3 3 2 + 5 6 2 = 6 5 2 , 1 6 2 + 6 3 2 = 6 5 2
再找出至少一个新例子,使得两个本原勾股数组有相同的c值。你能找出有相同c值的三个本原勾股数组吗?你能找出多余三个且有相同c值的本原勾股数组吗?
答: 使用习题2.3中(c)的猜想。更一般的猜想: c = p 1 k 1 p 2 k 2 ⋯ p r k r , { p 1 , p 2 , ⋯ , p r 是 c 的所有质因数 } ,则c 的本原勾股数组数为2 r − 1 ,所以不存在恰好c值相同的三个本原勾股数组。
( 5 × 13 × 17 ) 2 = 110 4 2 + 4 7 2 = 94 3 2 + 57 6 2 = 107 3 2 + 26 4 2 = 74 4 2 + 81 7 2
习题2.5
在第1章中我们看到 n 个三角数 T n 由公式
T n = 1 + 2 + 3 + ⋯ + n = 2 n ( n + 1 ) .
给出.前四个三角数是1 , 3 , 6 , 10 . 在我们的勾股数组( a , b , c ) 列表中有些 b 值是三角数的4倍,例如, ( 3 , 4 , 5 ) , ( 5 , 12 , 13 ) , ( 7 , 24 , 25 ) , ( 9 , 40 , 41 ) .
(a) 求出 b = 4 T 5 , 4 T 6 , 4 T 7 的本原勾股数组( a , b , c ) .
(b) 你认为对每个三角数T n 都存在b = 4 T n 的本原勾股数组( a , b , c ) 吗?如果你确信这成立,则证明它,否则,找出使其不成立的三角数。
(a) 使用习题2.3 (b)中的结论。( 899 , 60 , 901 ) , ( 1763 , 84 , 1765 ) , ( 3135 , 112 , 3137 )
(b) 使用习题2.3 (b)中的证明即可
习题2.6
如果观察本章的本原勾股数组表,你会发现多个三元组( a , b , c ) 满足 c 比 a 大 2.例如三元组( 3 , 4 , 5 ) , ( 15 , 8 , 17 ) , ( 35 , 12 , 37 ) , ( 63 , 16 , 65 ) 都具有这种性质。
(a) 再求两个本原勾股数组( a , b , c ) 使得 c = a + 2
(b) 求本原勾股数组( a , b , c ) 使得 c = a + 2 且 c > 1000
(c) 试求满足c = a + 2 的通用公式
(a) (b) (c) : 使用习题 2.3 中的构造方法, 即s = t + 2
则 a = s t = t 2 + 2 t , c = t 2 + 2 t + 2
习题2.7
对本章列表中的每个本原勾股数组( a , b , c ) , 计算2 c − 2 a , 这些值呈现某种特殊形式吗?试证明你的观察对所有本原勾股数组都成立。
答: 2 c − 2 a 是偶平方数。
2 c − 2 a = 2 × 2 s 2 + t 2 − 2 × s t = ( s − t ) 2
令t = 1, 则s - t可以取遍所有大于 0 的偶数
习题2.8
设 m , n 为相差 2 的正整数, 将 m 1 + n 1 写成最简分数。例如, 2 1 + 4 1 = 4 3 , 3 1 + 5 1 = 15 8 .
(a) 计算接下去的三个例子。
(b) 考察(a) 中的分子和分母,与上一页上的勾股数组表对照。提出关于这些分数的一个猜想。
(c) 证明你的猜想是正确的。
(a) 4 1 + 6 1 = 12 5 , 5 1 + 7 1 = 35 12 , 6 1 + 8 1 = 24 7
(b) m 1 + n 1 = b a , ( a , b , a 2 + b 2 ) 是本原勾股数组, 且:
{ m 为奇数 m 为偶数 a 2 + b 2 − b = 2 a 2 + b 2 − b = 1
(c) 证:
m 为奇数时易证 ( m , n ) = 1
令 s = m = n + 2 , t = n , 则 a ′ = s t = mn , b ′ = 2 s 2 − t 2 = 2 n + 2 = m + n
且 m 1 + n 1 = mn m + n = a ′ b ′
则有 c ′ = 2 s 2 + t 2 = t 2 + 2 t + 2 = mn + 2 = a ′ + 2
m 为偶数时易证 ( m , n ) = 2 ,令 m ′ = 2 m , n ′ = 2 n , 则 m ′ = n ′ + 1
令 s = m ′ + n ′ , t = 1 , 显然 ( s , t ) = 1 , 则 a ′ = s t = 2 n ′ + 1 , b ′ = 2 n ′ ( n ′ + 1 )
且 m 1 + n 1 = 2 n ′ + 2 1 + 2 n ′ 1 = 2 n ′ ( n ′ + 1 ) 2 n ′ + 1 = b ′ a ′
则有 c ′ = 2 s 2 + t 2 = 2 n ′ ( n ′ + 1 ) + 1 = b ′ + 1
习题2.9
(a) 阅读关于巴比伦数系的材料并写出简短说明。要包括1 ~ 10 以及 20, 30, 40, 50的记号。
(b) 了解被称为Plimpton 322 号的巴比伦泥石板并写出简要说明, 要涉及他的形成年代。
(c) Plimpton 322 号的第二和第三列给出了一些整数对( a , c ) ,他们满足c 2 − a 2 是完全平方数。将其中的一些数对从巴比伦数转化为十进制数。并计算 b 的值使得( a , b , c ) 为勾股数组
(a) 采用60进制。假如用∇ 表示 1 , ⟨ 表示 10 ,则有25 : ⟨⟨ ∇ ∇ ∇ ∇ ∇ , 136 : ∇∇ ⟨ ∇ ∇ ∇ ∇ ∇ ∇ .话说60怎么表示?
(b) 略
(c)
I 1.9834028 1.9491586 1.9188021 1.8862479 1.8150077 1.7851929 1.7199837 1.6845877 1.6426294 1.5861226 1.5625 1.4894168 1.4500174 1.4302388 1.3871605 II 119 3367 4601 12709 65 319 2291 799 481 4961 45 1679 161 1771 56 III 169 4825 6649 18541 97 481 3541 1249 769 8161 75 2929 289 3229 106 V 120 3456 4800 13500 72 360 2700 960 600 6480 60 2400 240 2700 90 是否本原 ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✖ ✓ ✓ ✓ ✖
代码-本原勾股数组(简称PPT)
public List < int [ ] > ppt ( int n ) {
List < int [ ] > ls = new ArrayList < > ( ) ;
for ( int t = 1 ; t * t < n ; t += 2 ) {
for ( int s = t + 2 ; ; s += 2 ) {
int c = ( s * s + t * t ) / 2 ;
if ( c > n ) break ;
if ( ! gcd ( t , s ) ) continue ;
int a = s * t ;
int b = ( s * s - t * t ) / 2 ;
ls . add ( new int [ ] { a , b , c } ) ;
}
}
return ls ;
}
public boolean gcd ( int x , int y ) {
while ( y > 0 ) {
int t = x % y ;
x = y ;
y = t ;
}
return x == 1 ;
}
其他
数论概论⋅ 第二部分
数论概论⋅ 第三部分
数论概论⋅ 第四部分
数论概论⋅ 第五部分
数论概论⋅ 第六部分