《数论概论》读书笔记 第5章 整除性与最大公因子数

网友投稿 888 2022-10-02

《数论概论》读书笔记 第5章 整除性与最大公因子数

《数论概论》读书笔记 第5章 整除性与最大公因子数

这章就是讲最大公因子的一些概念和求gcd的方法。 高中必修三,就已经知道可以有“辗转相除法”和“更相减损术”等方法能够更快的求出两个数的最大公因数 讲述一些概念。 m整除n指n是m的倍数。 如果m整除n,我们记为m|n。 如果m不整除n,则记为m∤n。 两个数a和b(不全为零)的最大公因数的最大公因数是整除它们两个的最大公因数,记为gcd(a,b)。如果gcd(a,b)=1,我们称a与b互素。

然后这章后面的就是怎么用“辗转相除法”求gcd了,并且给了“辗转相除法”的证明。

定理5.1.

题目解析: 1.gcd(12345,67890)=15,gcd(54321,9876)=3.2.

#include using namespace std;int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}int main(){ int a,b; while(cin>>a>>b) { cout<

3. 推导: ri=qi+2∗ri+1+ri+2ri+1=qi+3∗ri+2+ri+3 代入得: ri=(qi+2∗qi+3+1)∗ri+2+qi+2∗ri+3riri+2=qi+2∗qi+3+1+qi+2∗ri+3ri+2>qi+2∗qi+3+1. 因为,qi+2∗qi+3>=1 所以,riri+2>2 即,ri+2<12ri. 因此,最坏情况为每两次计算缩小一半,也就是2p=t,其中t为max(x,y),p为步数k2。所以有log2t=p,将p=k2代入,得步数k=2log2t。假设t有s位,也就是k<2log2(10s),得到k<2slog210<7s,因此可以认为最坏情况大约为位数的7倍。

4. 代码

#include using namespace std;typedef long long ll;ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b);}int main(){ ll a,b; while(cin>>a>>b) { cout<

(1). 证明:lcm(a,b)=abgcd(a,b). 证明: d∣lcm(a,b)⟺d∣a,b⟺a,b∣ab/d⟺gcd(a,b)∣ab/d⟺d∣ab/gcd(a,b). 所以,lcm(8,12)=24,lcm(20,30)=60,lcm(51,68)=204,lcm(23,18)=414.

(2).lcm(a,b)=abgcd(a,b).

(3). 证明看(1).

(4).lcm(301337,307829)=171460753.

(5). 肯定有多解啊。 对于gcd(m,n)=18, 假设m<=n,那么有一下解:

18 3618 5418 7218 9018 10818 12618 14418 16218 18018 19818 21618 23418 25218 27018 28818 30618 32418 34218 36018 37818 39618 41418 43218 45018 46818 48618 50418 52218 54018 55818 57618 59418 61218 63018 64818 66618 68418 70218 72018 73818 75618 77418 79218 81018 82818 84618 86418 88218 90018 91818 93618 95418 97218 99018 100818 102618 104418 106218 108018 109818 111618 113418 115218 117018 118818 120618 122418 124218 126018 127818 129618 131418 133218 135018 136818 138618 1404...............

对于lcm(m,n)=720,假设m<=n,那么有一下解:

1 7202 7203 7204 7205 1445 7206 7208 7209 809 2409 72010 14410 72012 72015 14415 72016 4516 9016 18016 36016 72018 8018 24018 72020 14420 72024 72030 14430 72036 8036 24036 72040 14440 72045 4845 8045 14445 24045 72048 9048 18048 36048 72060 14460 72072 8072 24072 72080 9080 14480 18080 36080 72090 14490 24090 720120 144120 720144 180144 240144 360144 720180 240180 720240 360240 720360 720720 720

5.

(1).(2).跑一下代码就知道了。有关循环长度的问题,得到L(21)=8,L(13)=10,,L(31)=107。另外,我们可以发现,对于前100个数进行试验,最后都是在4,2,1上停下来。

(3).8k+4⟺4k+2⟺2k+1⟺6k+48k+5⟺24k+16⟺12k+8⟺6k+4 所以,当n=8k+4时n和n+1经过3步后会变成同一个数,所以,n=8k+4时L(n)=L(n+1).。

(4). 同理,对n=128k+28时,L(n)=L(n+1)=L(n+2)的证明也可以用(3)中方法。

6. 自己写代码吧….3n+1 问题(卡拉兹(Callatz)猜想).

代码:

#include using namespace std;int main(){ int n = 0; while(cin>>n) { int ans = n; cout<

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序中使用echarts(微信小程序中使用signal)
下一篇:TIA通用函数库LGF
相关文章

 发表评论

暂时没有评论,来抢沙发吧~