[合集]数论小结论(五分钟弃坑系列)

Posted The Azure Arbitrator

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[合集]数论小结论(五分钟弃坑系列)相关的知识,希望对你有一定的参考价值。

※见多识广※
结论来源于ACdreamer
NEFU - 117 素数定理
题意:给定\(n\),求\(10^n\)范围内素数的个数的位数
\(x\)足够大时,\(π(x)=\frac{x}{ln(x)}\)
最近做的题真是水破天际

#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
ll n;
int main(){
    while(cin>>n){
        double ans=(double)n-log10(n)-log10(log(10));
        cout<<(ll)(ans+1)<<endl;
    }
    return 0;
} 

HDU - 2685 gcd定理
题意:求\(gcd(a^m-1,a^n-1)\)
定理:\(gcd(a^m-1,a^n-1)=a^{gcd(m,n)}-1\)
其实补上\((a-1)\)展开也是等比数列形式的,那肯定是一个\(a^x-1\)的数
更为普遍的定理也记下:对于\(a>b\),\(gcd(a^m-b^m,a^n-b^n)=a^{gcd(m,n)}-b^{gcd(m,n)}\)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll fpw(ll a,ll n,ll mod){
    ll ans=1;
    while(n){
        if(n&1) ans=(ans*a)%mod;
        n>>=1;a=(a*a)%mod;
    }
    return ans;
}
int main(){
    ll a,m,n,k,T; cin>>T;
    while(T--){
        cin>>a>>m>>n>>k;
        cout<<(fpw(a,gcd(m,n),k)-1+k)%k<<endl;
    }
    return 0;
}

HDU - 2582 gcd与组合数的定理
\(gcd({n\choose i})\)\(n\)含有多个素因子则为1,否则为该因子

//此处应有代码

不更了,写到纸质文件比较好

以上是关于[合集]数论小结论(五分钟弃坑系列)的主要内容,如果未能解决你的问题,请参考以下文章

数论五·欧拉函数

hihoCoder 1298 : 数论五·欧拉函数

VS Code中小程序与Vue常用插件合集(前端合集)

微信小程序开发优秀教程及文章合集第一期

STM32F103五分钟入门系列时钟框图+相关寄存器总结+系统时钟来源代码(寄存器)

数论模板合集(更新中)