数论
南宫嘉俊
学生
展开
-
裴蜀定理
在数论中,裴蜀定理是一个关于最大公约数(或最大公约式)的定理。裴蜀定理得名于法国数学家艾蒂安·裴蜀,说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性丢番图方程(称为裴蜀等式):若a,b是整数,且(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。 它的一个重要推论是:a,b互质的充要条件是存在整数x,y使a原创 2015-08-19 08:21:24 · 556 阅读 · 0 评论 -
大素数判断和素因子分解(miller-rabin,Pollard_rho算法)
#include #include #include #include #include #include using namespace std; //**************************************************************** // Miller_Rabin 算法进行素数测试 //速度快,而且可以判断 <2^63的数 //********原创 2015-09-15 21:57:28 · 346 阅读 · 0 评论 -
HDU 2662 Coin
纯数学题 /*设所求为n,那么n+a、n+b可以用a、b线性表出,而n不可。 所以 n+a=x1*a+y1*b,n+b=x2*a+y2*b 所以 n=(x1-1)*a+y1*b n=x2*a+(y2-1)*b 因为n不能被线性表出,所以x1=0,y2=0 所以 n+a=y1*b,n+b=x2*a 所以 n+a=y1*b,n+a=(x2+1)*a-b 所以 (x2+1)*a-b是b的倍数 因为a、原创 2015-09-17 19:09:01 · 389 阅读 · 0 评论 -
HDU 5495 LCS(置换群)
//离散数学数学中的置换群应用,答案就是找出所有循环的个数(循环长度必须大于1),最后用n-sum(sum为循环个数),每个循环必有一个与其他不同,每个循环牺牲一个元素。就是LCS。 #include #include #include using namespace std; const int maxm=1e5+20; int a[maxm]; int b[maxm]; int p1[maxm原创 2015-10-07 15:42:47 · 323 阅读 · 0 评论 -
POJ 3270 Cow Sorting(置换群问题)
//离散数学中的置换群问题,找循环节个数。两种情况,1:找循环节中最小值,s-Min+(len-1)*Min。2:用数列中的最小值s+Min+(len+1)*MIN。取最小和 #include #include #include using namespace std; const int maxm=1e5+10; const int inf=1<<29; int vis[maxm]; struc原创 2015-10-08 11:08:10 · 355 阅读 · 0 评论 -
HDU 2136 Largest prime factor
素数筛选法#include #include #include using namespace std; const int maxm=1e6+10; int f[maxm]; void Init() { int cnt=1; memset(f,0,sizeof(f)); for(int i=2;i<=maxm;i++) { if(!f[i])原创 2015-10-11 20:26:48 · 287 阅读 · 0 评论 -
HDU 5428 The Factor
对于每一个数字,它有用的部分其实只有它的所有质因子(包括相等的)。求出所有数的所有质因子中最小的两个,相乘就是答案。如果所有数字的质因子个数不到两个,那么就是无解。时间复杂度O(n*sqrt(a)) O(n∗sqrt(a)) #include #include #include using namespace std; int vis[100000]; int prime[100000]; _原创 2015-09-23 20:16:01 · 293 阅读 · 0 评论 -
费马小定理
(a^b)%p=(a^(b%(p-1)))%p原创 2015-11-21 22:53:54 · 330 阅读 · 0 评论