数论基本算法
来源:互联网 发布:.vip域名备案 编辑:程序博客网 时间:2024/04/27 15:56
这篇blog简单总结一下一些基本的数论算法,包括gcd,ex_gcd,和素数的一些基本算法,
公约数
gcd
LL gcd(LL a,LL b){ return b==0? a:gcd(b,a%b);}
ex_gcd
//返回值为最大公约数LL ex_gcd(LL a,LL b,LL &x,LL &y){ LL d = a; if(!b){x = 1,y = 0;} else{ d = ex_gcd(b,a%b,y,x); y-=a/b*x; } return d;}
素数
素数判定
bool isPrime(int n){ for(int i=2 ; i*i<=n ; ++i) if(n%i == 0)return false; return n!=1;}
求一个数的约数
void divisor(int n,vector<int>& div){ int i; for( i = 1 ; i*i<n ; ++i) { if(n%i==0){ div.push_back(i);div.push_back(n/i); } } if(i*i==n)div.push_back(i);}
素因子分解
void prime_factor(int n,map<int,int> &pf){ for(int i =2 ; i*i<=n ; ++i) { while(n%i==0) { ++pf[i]; n/=i; } } if(n!=1)pf[n] = 1;}
Eratosthenes筛法
void Eratosthenes(int n){ memset(is_prime,true,sizeof(is_prime)); for(int i = 2 ; i*i<=n; ++i) if(is_prime[i]) for(int j=i*i ; j<=n ; j+=i)is_prime[j] = false;}
区间筛法
void segment_sieve(LL a,LL b)//[a,b]{ memset(is_prime_ab,true,sizeof(is_prime_ab[0])*(b-a+1)); memset(is_prime_sqrtb,true,sizeof(is_prime_sqrtb[0])*(sqrt(b)+2)); for(LL i = 2 ; i*i<=b ; ++i) if(is_prime_sqrtb[i]){ for( LL j = i*i ; j*j<=b ; j+=i)is_prime_sqrtb[j] = false; for(LL j = max(i*i,(a-1)/i+1)*i ; j<=b ; j+=i)is_prime_ab[j-a] = false; }}
简单模运算
power_mod
LL power_mod(LL x,LL n,LL mod){ LL res = 1; while(n) { if(n&1)res = (res*x)%mod; x = (x*x)%mod; n>>=1; } return res;}
大整数取模
LL big_mod(string val,LL mod){ LL res = 0; for(int i=0 ; i<val.length() ; ++i) { res = ((res)*10+val[i]-'0')%mod; } return res;}
0 0
- 数论基本算法
- 数论有关基本算法c+
- 基本数论
- 基本数论
- 数论中的基本算法 POJ 1845 SPOJ DIVSUM
- 数论算法
- 数论算法
- 数论算法
- 数论算法
- 数论 基本模板
- 数论基本定理
- 数论算法函数库
- 一、数论算法
- 数论基础算法
- 数论(算法概述)
- 数论/扩展欧几里德算法
- 两个数论算法
- 数论(欧几里得算法)
- Java 内存分配全面浅析
- Eclipse 插件开发 -- 深入理解菜单(Menu)功能及其扩展点
- 189. Rotate Array
- 字符驱动设备中几个重要的结构体(cdev,file_operations,inode,file)
- 图灵杯 粉丝与分割平面
- 数论基本算法
- 2016/11/19 反思
- Javascript高级程序设计——3.数据类型(1)typeof、null、undefined、boolean、number
- 关于PL/SQL配置本地NET报ORA-12154: TNS: 无法解析指定的连接标识符
- 6.824: Distributed Systems 课程讲义1
- Sublime Text 3 安装Package Control
- 深度学习-Caffe 使用问题整理
- Java多线程(五)
- Oracle-数据字典解读