![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
码院
这个作者很懒,什么都没留下…
展开
-
扩展欧几里得算法
欧几里德算法以下是根据百度百科给自己的总结:欧几里德算法概述: 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: gcd函数就是用来求(a,b)的最大公约数的。 gcd函数的基本性质: gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|) 欧几里得算法的公式表述 gcd(a,b原创 2012-08-11 02:07:50 · 441 阅读 · 0 评论 -
扩展欧几里得算法
欧几里德算法欧几里德算法概述: 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: gcd函数就是用来求(a,b)的最大公约数的。 gcd函数的基本性质: gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|) 欧几里得算法的公式表述 gcd(a,b)=gcd(b,a mod b原创 2012-08-20 12:50:05 · 539 阅读 · 0 评论 -
3n+1数链问题
问题如下:1.输入一个正整数N;2.把N显示出来;3.如果N=1时则结束一切操作;4.如果N是奇数则N变为3*N+1,否则N变为N/2;5.转入步骤2.问题分析:这道题目比较简单,我们只需要按照题目的要求一步步的做下去就可以找到结果。参考代码:#includeusing namespace std;int max,M;void原创 2013-03-07 20:13:26 · 1521 阅读 · 0 评论 -
K尾相等数
输入一个自然数K(K>1),若存在自然数M和N(M>N),使得K^M和K^N均大于或等于1000,且它们的末尾三位数相等,则称M和N是一对“K尾相等数”。现在请编程求出M+N值最小的K尾相等数。---问题分析对于一个数,它的幂是无穷无尽的,但是我们可以注意到末尾三位数只有1000个,也就是表明一定会有重复的末尾三位数,当一个数的末尾三位数一定时,它的下一次幂的末尾三位数也一定了。也就是原创 2013-03-07 20:17:26 · 2515 阅读 · 0 评论 -
求自然数n的自然排列
/*输出前n个自然数的所有排列*/#includeusing namespace std;void swap(int &x,int &y){ int temp=x; x=y; y=temp;}int n;int data[100];void solve(int t){ if(t==n) { for(int i=1;i<=n;i++) { cout<<da原创 2013-03-07 20:19:09 · 908 阅读 · 0 评论 -
最大公约数和最小公倍数
1.如果q和r是a除以b的商和余数,即a=b*q+r.则有gcd(a,b)=gcd(b,r).当r=0时,其最大公约数就是b了。用辗转相除法求最大公约数int Gcd(int a,int b){ int gcd; if(b==0) return a; else gcd=Gcd(b,a%b);}利用最大公约数求出最小公倍数Lcm(a,b)=a*b/(Gcd(a,原创 2013-03-07 20:21:28 · 650 阅读 · 0 评论