求两个数的最大公约数

来源:互联网 发布:随心安软件 编辑:程序博客网 时间:2024/06/03 21:10

求公约数有多种方法,在这主要介绍两种方法。

1、更相减损之术
以两数中较大的数减去较小的数,获得的差与原先较小的数构成新的一对数,在以大的数减去小的数,依次循环。用同样的方法操作,直至产生一对相等的数为止,该数即为最大公约数。

  #include<stdio.h>#include<stdlib.h>int main(){   int n,a,b,c;   n=1;   printf("请输入两个整数(空格隔开):");   scanf("%d %d",&a,&b);   if(a<b) {    a=a^b;    b=a^b;    a=a^b; } while(n!=0) {    a=a-b;    if(a<b)    {        a=a^b;        b=a^b;        a=a^b;    }    if(a==b)    {        n=0;    }}printf("\n最大公约数是:%d\n",b);system("pause");}

2、辗转相除法
用较大的数除以较小的数,余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽为止,则较小的数就是最大公约数。

 #include<stdio.h>#include<stdlib.h>int main(){   int a,b,c;   printf("请输入两个整数(空格隔开):");   scanf("%d %d",&a,&b);   c=a%b;   while(c!=0) {   a=b;   b=c;   c=a%b; } printf("\n最大公约数是:%d\n",b); system("pause");}
原创粉丝点击