求最大公约数和最小公倍数的常用解法

来源:互联网 发布:mac os 10.12.6怎么样 编辑:程序博客网 时间:2024/05/22 12:40

对于m,n两数求最大公约数的算法:

(1)辗转相除法

1.c=m%n。

2.若c=0,则n就是两数的最大公约数。

3.若c!=0,则m=n,n=c然后重新执行1。

代码实现过程如下:

#include<stdio.h>int sove(int x,int y){return x%y==0?y:sove(y,x%y);}int main(){int m,n,c;scanf("%d %d",&m,&n);int w=sove(m,n);printf("%d\n",w);return 0;} 
(2)相减法

1.若m>n,则m=m-n。

2.若m<n,则n=n-m。

3.若m=n,则m或n就是最大公因数。

4.若在m!=n的情况下回去执行1。

代码实现过程如下:

#include<stdio.h>int sove(int x,int y){int answer;while(x!=y){if(x>y)x=x-y;elsey=y-x;}answer=x;return answer;}int main(){int m,n,c;scanf("%d %d",&m,&n);int w=sove(m,n);printf("%d\n",w);return 0;} 
(3)穷举法

1.找出m,n中较小的数。

2.i从m,n中较小的一个数开始到1进行循环如果m,n两数均能整除i则i即为最大公因数。

代码实现过程如下:

#include<stdio.h>int sove(int x,int y){int answer;if(x>y){int t=x;x=y;y=t;}for(int i=x;i>=1;i--){if(x%i==0&&y%i==0){answer=i;break;}}return answer;}int main(){int m,n,c;scanf("%d %d",&m,&n);int w=sove(m,n);printf("%d\n",w);return 0;} 


对于m,n两数求最小公倍数的算法

最小公倍数=m*n/最大公因数



原创粉丝点击