首页 > 其他分享 >数学基础板子(没有推导过程)

数学基础板子(没有推导过程)

时间:2024-03-25 16:15:17浏览次数:22  
标签:prime phi gcd 推导 int varphi 板子 素数 数学

\({\color{Red} 声明:由于作者是个蒟蒻,所以本博客只含结论,不含推导过程。如果有大佬想看推导过程可以看 (这里是传送门)}\) oi-wiki,教练HaneDaniko

素数

筛法求素数

  • 用于求1~n的素数

线性筛

点击查看代码
int prime[maxn]; // 保存素数
bool is_not_prime[maxn]={1,1}; // 0和1都不是素数
// 筛选 n 以内的所有素数
void xxs(int n) 
{
    for(int i=2;i<=n;++i) {
        if(!is_not_prime[i]) // 如果i是素数
        { 
            prime[++prime[0]]=i;
        }
        for(int j=1;j<=prime[0]&&i*prime[j]<=n;++j) 
        {
            is_not_prime[i*prime[j]] = 1;
            // 如果i中包含了该质因子,则停止
            if(i%prime[j]==0)break;
        }
    }
}

埃氏筛

点击查看代码
int n,a[50000005];
int main()
{
	scanf("%d", &n);
	for(int i=1;i<=n;i++)a[i]=1;
	for(int i=2;i<=n;i++)
	{
		if(a[i] == 0)continue;
		for(int j=i;j<=n/i;j++)
		{
			a[i*j] = 0;
		}
	}
	for(int i=2;i<=n;i++)
	{
		if(a[i])printf("%d\n",i);
	}
	return 0;
}

欧拉函数

  • 用于求i:1~n中与n互质的数(gcd(i,n)==1)的个数,用\(\varphi\)表示。
  • 特殊性质:
  1. \(\varphi(1)=1\)
  2. p是一个素数\(\varphi(p)=p-1\),\(\varphi(p^k)=(p-1)\times p^{k-1}\)
  3. 若\(gcd(a,b)=1\),则\(\varphi(a\times b)=\varphi(a)\times \varphi(b)\),特殊的:对于奇数n\(\varphi(2n)=\varphi(n)\)

求欧拉函数

  • 只求一个数的欧拉函数
点击查看代码 ```cpp int euler_phi(int n) { int m=int(sqrt(n+0.5)); int ans=n; for(int i=2;i<=m;i++) { if (n % i == 0) { ans=ans/i*(i-1); while (n%i==0)n/=i; } } if(n>1)ans=ans/n*(n-1); return ans; } ```
  • 求1~n所有数的欧拉函数
点击查看代码
int n,phi[N],prime[N],tot;
bool not_prime[N];
void getPhi() 
{
    int i,j,k;
    phi[1]=1;
    for(i=2;i<=n;++i) 
    {
        if(!not_prime[i]) 
        {
            prime[++tot]=i;
            phi[i]=i-1; 
        }
        for(j=1;j<=tot;++j) 
        {
            k=i*prime[j];
            if(k>n)break;
            not_prime[k]=true;
            if(i%prime[j]==0) 
            { 
                phi[k]=prime[j]*phi[i];
                break;
            } 
            else phi[k]=(prime[j]-1)*phi[i];
        }
    }
}

费马小定理

  • 模数为素数
  • 若p是素数,a不是p的倍数(或\(gcd(a,p)=1\)),则\(a^{p-1} \equiv 1 \pmod p\)。
  • 另一种形式:若p为素数,对任意整数a,有\(a^p\equiv a \pmod p\)。

欧拉定理

  • 费马小定理是用来阐述在素数模下,指数的同余性质。当模是合数时,就要用范围更广的欧拉定理了。
  • 若\(gcd(a,m)=1\),则\(a^{\varphi(m)}\equiv 1 \pmod m\)。
  • 特别的:当m为素数时,就是费马小定理。

拓展欧拉定理

\[a^b= \begin{cases} a^{b\,mod\,\varphi(p)} \qquad\qquad gcd(a,p)=1\\ a^b \qquad\qquad\qquad\,\;\;\; gcd(a,p)\neq1 ,b<\varphi(p)\pmod m\\ a^{b\,mod\,\varphi(p)+\varphi(p)} \qquad gcd(a,p)\neq1 ,b\ge\varphi(p) \end{cases} \]

最大公约数

  • 新版本的dev中有直接求最大公约数的函数__gcd(a,b)(这是两个下划线),据说比赛里也可以用。

辗转相除法求最大公约数

  • 原理:\(gcd(x,y)=gcd(y,x\;mod\;y)\)
点击查看代码
//递归形式
int gcd(int x,int y) 
{
    return(y==0?x:gcd(y,x%y));
}

//非递归形式
int gcd(int x,int y) 
{
    int r=x%y;
    while(r) 
    {
        x=y;
        y=r;
        r=x%y;
    }
    return y; 
}

裴蜀定理

  • a,b为两个不全为零的整数,对任意整数x,y,满足\(gcd(a,b)\,|\,ax+by\),
    则存在整数x,y使\(ax+by=gcd(a,b)\)。
  • 逆定理:a,b是不全为零的整数,若\(d(d>0)\)是a,b的公因数,且存在整数x,y,使得\(ax+by=d\),则\(d=gcd(a,b)\)。
  • 特殊的,a,b为不全为零的整数,若存在整数x,y,使得\(ax+by=1\),则a,b互质。

拓展欧几里得

  • 常用于求\(ax+by=gcd(a,b)\)的一组整数解(x,y为未知数)。

求任意一组解

点击查看代码
int exgcd(int a,int b,int &x,int &y) 
{
    if(b==0) 
    {
        x = 1;
        y = 0;
        return a;
    }
    int ret=exgcd(b,a%b,x,y);
    int t=x;
    x=y;
    y=t-a/b*y;
    return ret;
}
  • 这个函数的返回值既不是x也是不y,而是a,b的最大公约数,这也是函数传参数时要带&的原因(这样可以改变原参数值)。

求最小正整数解和同解

  • 若\((x_0,y_0)\),为任意一组解,则同解\((x,y)\)为

\[\begin{cases} x=x_0+b/gcd(a,b)\times t \\y=y_0-a/gcd(a,b)\times t\end{cases} \]

其中t为任意整数

标签:prime,phi,gcd,推导,int,varphi,板子,素数,数学
From: https://www.cnblogs.com/wang-qa/p/18093984

相关文章

  • 2016年认证杯SPSSPRO杯数学建模C题(第二阶段)如何有效的抑制校园霸凌事件的发生全过程
    2016年认证杯SPSSPRO杯数学建模C题如何有效的抑制校园霸凌事件的发生原题再现:  近年来,我国发生的多起校园霸凌事件在媒体的报道下引发了许多国人的关注。霸凌事件对学生身体和精神上的影响是极为严重而长远的,因此对于这些情况我们应该给予高度的重视。霸凌是各种形式......
  • 【408直通车】(考研数一、二、三合集)高等数学公式全覆盖(下)
    微分方程一阶微分方程:y′=f......
  • 数学算法(算法竞赛、蓝桥杯)--判定质数试除法
    1、B站视频链接:G06判定质数试除法_哔哩哔哩_bilibili题目链接:【深基7.例2】质数筛-洛谷#include<bits/stdc++.h>usingnamespacestd;boolis_prime(intx){ if(x==1)return0;//特判1不是质数 for(inti=2;i*i<=x;i++){//枚举小的那个到根号n即可 if(x%i==0......
  • 向量运算在高中数学中的应用
    向量的运算及性质除非特殊说明,否则以下向量均默认指\(R^3\)中的元素。线性运算包括加法与数乘。点积(内积)——垂直与正交模设向量\(\vec{a}=(x,y,z)\),定义其模(2-范数)为\(|\veca|=\sqrt{x^2+y^2+z^2}\),几何意义为向量所对应的有向线段的长度。模是度量向量大小的方法,......
  • 数学建模 (线性规划 python代码 两种)
    线性规划: 线性规划(LinearProgramming,LP)是一种数学优化方法,用于解决一类特定类型的最优化问题。该问题的目标是在给定的一组线性约束条件下,找到使某个线性目标函数达到最大或最小的变量值。线性规划问题可以表示为以下标准形式:最小化(或最大化):Z=c^T*x约束条件:Ax<=b,......
  • 数学建模常用代码
    一维插值步骤步骤:(1)输入已知数据,x,y(2)输入待插自变量的值x1代码:x=1:12;y=[589152529313022252724];x1=1:0.1:12;t=interp1(x,y,x1,'spline');% plot(x1,t,'r:') %作图xlabel('x'),ylabel('y')二维插值步骤步骤:(1)先输入二维数据的x,y坐标值(2)输入Z......
  • 东京大学和京都大学2024年招生理科数学试题
    **东京大学2024年招生数学试题****第1题.**给定空间直角坐标系中一点$A(0,-1,1)$,设$xOy$平面上一点$P$满足以下条件(i),(ii),(iii).(i)$P$与原点$O$不重合;(ii)$\displaystyle\angleAOP\geqslant\frac{2\pi}{3}$;(iii)$\displaystyle\angleOAP\leqslant\frac{\pi}{6......
  • 高等数学考研基础篇——第三章 一元微分学的应用
    这一章节特别重要,需要多花一些时间和精力去理解和学习,因此本章我写的详细一些,仅供参考。有关极值点:函数的导数在某一点可能存在也可能不存在,当函数在该点的导数存在并且为0或者在该点不存在导数时,该点可能是极值点,但反推则不对。当函数的某点在它的邻域内既可导且等于零的时......
  • 【离散数学-学习日记】2024-3-23
    有向欧拉图的判别法【定理4-3】有向图D是欧拉图当且仅当D是强连通的且每个顶点的入度都等于出度。【定理4-4】有向图D是半欧拉图当且仅当D是单向连通的,且D中恰好有两个奇度顶点,其中一个的入度比出度大1,另一个的出度比入度大1,而其余顶点的入度都等于出度。【定理4-5】G是......
  • 数学建模常用代码
    SVM分类器1.命令函数部分:clear;%清屏clc;X=load('data.txt');n=length(X);%总样本数量y=X(:,4);%类别标志X=X(:,1:3);TOL=0.0001;%精度要求C=1;%参数,对损失函数的权重b=0;%初始设置截距bWold=0;%未更新a时的W(a)Wnew=0;%更新a后的W(a)fori=1......