8.基础数论1

news/2023/6/9 18:39:58

一、最大公因数

1.定义

  • a1,...,ana_1,...,a_na1,...,ann(n≥2)n(n\geq2)n(n2)个整数。若整数ddd是它们中每一个数的因数,则ddd就叫做a1,...,ana_1,...,a_na1,...,an的一个公因数

  • a1,...,ana_1,...,a_na1,...,an不全为000。那么整数a1,...,ana_1,...,a_na1,...,an的所有公因数中最大的一个公因数就叫做最大公因数。若整记作(a1,...,an)(a_1,...,a_n)(a1,...,an)

  • (a1,...,an)=1(a_1,...,a_n)=1(a1,...,an)=1时,称a1,...,ana_1,...,a_na1,...,an互素互质

2.性质

  • a1,...,ana_1,...,a_na1,...,annnn个不全为零的整数,则:

    • a1,...,ana_1,...,a_na1,...,an∣a1∣,...,∣an∣|a_1|,...,|a_n|a1,...,an的公因数相同
    • (a1,...,an)=(∣a1∣,...,∣an∣)(a_1,...,a_n)=(|a_1|,...,|a_n|)(a1,...,an)=(a1,...,an)
  • bbb是任一正整数,则(0,b)=b(0,b)=b(0,b)=b

  • [a,b]=ab(a,b)[a,b]=\frac{ab}{(a,b)}[a,b]=(a,b)ab

3.求解最大公因数

(1)暴力法

暴力枚举每一个数,并暴力的去寻找每一个数的因数,以此来更新当前的最大公因数。

ll gcd=a[1];
for(ll i=2;i<=n;i++)
{for(ll j=min(gcd,a[i]);j>=2;j--){if(a[i]%j==0 && gcd%j==0){gcd=j;break;}}
}

时间复杂度O(n⋅avg)O(n\cdot avg)O(navg)

(2)辗转相除法

性质:设a,b,ca,b,ca,b,c是三个不全为000的整数,并假设a>ba>ba>bqqq也是整数。如果a=q⋅b+ca=q\cdot b+ca=qb+c,则(a,b)=(b,c)(a,b)=(b,c)(a,b)=(b,c)

故而,要求(a,b)(a,b)(a,b)只需求(b,c)(b,c)(b,c)即可,如此反复即为辗转相除法,时间复杂度大大降低。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cmath>using namespace std;
typedef long long ll;ll gcd(ll a,ll b)
{if(b==0)return a;return gcd(b,a%b);
}
int main()
{ll num[100],n;cin>>n;for(ll i=1;i<=n;i++)cin>>num[i];ll ans=0;for(ll i=1;i<=n;i++)ans=gcd(ans,num[i]);cout<<ans<<endl;return 0;
}

辗转相除法本身的时间复杂度为O(logalog2b)O(loga\ log^2b)O(loga log2b)

二、同余的基本介绍

1.定义

给定一个正整数mmm,两个整数a,ba,ba,b叫做模mmm同余,如果a−ba-babmmm整除,或m∣a−bm|a-bmab,就记作a≡b(modm)a\equiv b(mod\ m)ab(mod m)。否则,叫做模mmm不同余,记作a≢b(modm)a\not\equiv b(mod\ m)ab(mod m)

2.基本性质

  • 自反性:对任一整数aaa,有a≡a(modm)a\equiv a(mod\ m)aa(mod m)
  • 对称性:若a≡b(modm)a\equiv b(mod\ m)ab(mod m),则b≡a(modm)b\equiv a(mod\ m)ba(mod m).
  • 传递性:若a≡b(modm)a\equiv b(mod\ m)ab(mod m)b≡c(modm)b\equiv c(mod\ m)bc(mod m),则a≡c(modm)a\equiv c(mod\ m)ac(mod m)

若一个关系有上面三个关系,则称为等价关系

三、同余的运算

1.加法与乘法

mmm是一个正整数,设a1,a2,b1,b2a_1,a_2,b_1,b_2a1,a2,b1,b2444整数,如果:
a1≡b1(modm),a2≡b2(modm)a_1\equiv b_1(mod\ m),a_2\equiv b_2(mod\ m) a1b1(mod m),a2b2(mod m)
则可以满足以下运算规则:

  • a1+a2≡b1+b2(modm)a_1+a_2\equiv b_1+b_2(mod\ m)a1+a2b1+b2(mod m)
  • a1⋅a2≡b1⋅b2(modm)a_1\cdot a_2\equiv b_1\cdot b_2(mod\ m)a1a2b1b2(mod m)

2.运算性质

  • mmm是一个正整数,设d⋅a≡d⋅b(modm)d\cdot a\equiv d\cdot b(mod\ m)dadb(mod m)。如果(d,m)=1(d,m)=1(d,m)=1,则a≡b(modm)a\equiv b(mod\ m)ab(mod m)

  • mmm是一个正整数,设a≡b(modm),d>0a\equiv b(mod\ m),d>0ab(mod m),d>0,则d⋅a≡d⋅b(modd⋅m)d\cdot a\equiv d\cdot b(mod\ d\cdot m)dadb(mod dm)

  • mmm是一个正整数,设a≡b(modm)a\equiv b(mod\ m)ab(mod m),如果整数d∣(a,b,m)d|(a,b,m)d(a,b,m),则ad≡bd(modmd)\frac{a}{d}\equiv \frac{b}{d}(mod\ \frac{m}{d})dadb(mod dm)

  • m1,...,mkm_1,...,m_km1,...,mkkkk个正整数,设a≡b(modmi),i=1,...,ka\equiv b(mod\ m_i),i=1,...,kab(mod mi),i=1,...,k,则a≡b(mod[m1,...,mk])a\equiv b(mod\ [m_1,...,m_k])ab(mod [m1,...,mk])

3.快速幂

ll quickpow(ll a,ll p,ll mod)
{if(a==0)return 0;while(p){if(p&1)ans=ans*a%mod;a=a*a%mod;p>>=1;}return ans;
}

四、作业

P1888 三角函数

P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题

P1372 又是毕业季I

P1414 又是毕业季II

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4559241.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

新房装修|厨房台面给我做高了10公分,做饭不方便

真的太想哭了&#xff0c;千算万算&#xff0c;工人竟然把厨房台面做高了&#xff0c;就不知道长点心么&#xff01;而且还不止一点点&#xff0c;足足有10公分&#xff0c;做饭不方便这可咋整啊&#xff0c;以后可是要一直用下去的啊&#xff0c;急急急&#xff01;&#xff0…

kicad最小布线宽度默认是多少_常见停车场管理系统项目的安装布线及注意事项...

现在很多现代化的智能停车场系统都广泛应用于各大小型停车场、地下车库、公寓小区进出口、公司单位的大门口等&#xff0c;智能停车场的主要组成部分是&#xff1a;系统由出口控制机、入口控制机、电动道闸机、车辆检测器、地感、通讯转换器、IC读卡器&#xff0c;停车场管理软…

怎么判断30公分?看我的图文传教就清楚了

想当年&#xff0c;我学车的时候也是糊里糊涂啊&#xff0c;练了一天都没练好&#xff0c;30公分到底是什么鬼&#xff1f;而且不仅是科目二要30公分&#xff0c;科目三也要用到30公分&#xff01;&#xff01;&#xff01;所以说&#xff0c;学会判断30公分&#xff0c;是考车…

75寸的电视机长和宽是多少 75寸电视长宽多少厘米

75寸电视的长和宽&#xff0c;精确为166.03厘米、93.38厘米&#xff0c;大约为166厘米、93厘米。 家里的电视就是活动时8折抢购太给力了 http://www.adiannao.cn/dy 电视的尺寸一般都是代表电视屏幕对角线的长度&#xff0c;所以这里的75寸&#xff0c;其实就是电视屏幕对角线的…

Stream的使用和原理分析

Stream的使用和原理分析1 背景2 基本逻辑原理3 惰性求值4 操作类型5 并行遍历Spliterators6 实现原理初探6.1 代码初步分析6.2 求和的顺序6.3 怎么设计代码按照求和顺序7 源码分析8 Stream idea调试9 原理实现图小结1 背景 Spliterator&#xff08;splitable iterator可分割迭…

Linux常用指令及Web程序的部署

作者&#xff1a;~小明学编程 文章专栏&#xff1a;Linux 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 Linux中的常见指令 ls pwd cd 文件操作 touch cat mkdir echo rm cp mv man less vim head tail grep ps netstat Linux权限 搭建Ja…

“华为杯”研究生数学建模竞赛2004年-【华为杯】B题:实用下料的数学模型(附优秀论文)

赛题描述 “下料问题(cutting stock problem)”是把相同形状的一些原材料分割加工成若干个不同规格大小的零件的问题,此类问题在工程技术和工业生产中有着重要和广泛的应用. 这里的“实用下料问题”则是在某企业的实际条件限制下的单一材料的下料问题。 一个好的下料方案首先…

PyCharm 在Mac OS系统中无法进入单元测试

PyCharm 在Mac OS系统中无法进入单元测试模式问题分析解决问题 今天从Clion开发环境切换到PyCharm&#xff0c;准备使用Python版的OpenCV重现一篇Paper的算法模型。由于本人对Python的用法和Pycharm单元测试还不熟悉&#xff0c;在即将进行算法测试的时候&#xff0c;遇到了比较…