机试算法讲解: 第22题 是你的最大公约数

来源:互联网 发布:制作ubuntu u盘启动盘 编辑:程序博客网 时间:2024/06/15 06:17
/*求最大公约数。同事满足a%c=0,b%c=0的最大正整数c。若a,b中有一个为0,则最大公约数为非0数。若a,b均为0,则没有最大公约数关键:1 a=b,b = a%b缩小问题规模输入:49 14输出:7*/#include <stdio.h>#include <string.h>#include <stdlib.h>int main(int argc,char* argv[]){int a,b;while(EOF!=scanf("%d %d",&a,&b)){while(true){if(a==0 && b==0){printf("Have no GCD!");break;}else if(a==0){printf("%d",b);break;}else if(b==0){printf("%d",a);break;}else{//a = b;//b = a%b;//易错,必须先求a%b,的值,再赋给b,而不能直接用b=a%bint iTemp = a % b ;a = b;b = iTemp;}}}system("pause");getchar();return 0;}

0 0