`
piperzero
  • 浏览: 3555833 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

题目1049: 最大公约数

 
阅读更多

 

题目描述

输入两个正整数,求其最大公约数。

 

 

输入

测试数据有多组,每组输入两个正整数。

 

 

输出

对于每组输入,请输出其最大公约数。

 

 

样例输入
49 14
 

 

样例输出
7
 

 

提示 [+]

*** 提示已隐藏,点击上方 [+] 可显示 ***

 

 

来源

2011年哈尔滨工业大学计算机研究生机试真题

 



 

 

/********************************* 
*   日期:2013-3-4
*   作者:SJF0115 
*   题号: 天勤OJ 题目1049: 最大公约数
*   来源:http://acmclub.com/problem.php?id=1049
*   结果:AC 
*   来源:2011年哈尔滨工业大学计算机研究生机试真题
*   总结: 
**********************************/ 
#include<stdio.h> 

int GCD(int a,int b)  
{   
    //如果a < b  
    if(a < b){  
        return GCD(b,a);  
    }  
    if(b == 0){  
        return a;  
    }  
    else{  
        return GCD(a - b,b);  
    }  
}   

int main(){
	int a,b;
	while(scanf("%d %d",&a,&b) != EOF){
		printf("%d\n",GCD(a,b));
	}
	return 0;
}

 

 

 

/********************************* 
*   日期:2013-3-4
*   作者:SJF0115 
*   题号: 天勤OJ 题目1049: 最大公约数
*   来源:http://acmclub.com/problem.php?id=1049
*   结果:AC 
*   来源:2011年哈尔滨工业大学计算机研究生机试真题
*   总结: 
**********************************/ 
#include<stdio.h> 

//递归形式   
int GCD(int a,int b)  
{   
    if(b == 0){  
        return a;  
    }  
    else{  
        //a,b和b,a%b有相同的最大公约数  
        return GCD(b,a%b);  
    }  
  
}   

int main(){
	int a,b;
	while(scanf("%d %d",&a,&b) != EOF){
		printf("%d\n",GCD(a,b));
	}
	return 0;
}

 

/********************************* 
*   日期:2013-3-4
*   作者:SJF0115 
*   题号: 天勤OJ 题目1049: 最大公约数
*   来源:http://acmclub.com/problem.php?id=1049
*   结果:AC 
*   来源:2011年哈尔滨工业大学计算机研究生机试真题
*   总结: 
**********************************/ 
#include<stdio.h> 

//判断奇偶性  
int IsEvenOdd(int n){  
    if(n % 2 == 0){  
        return 1;  
    }  
    else{  
        return 0;  
    }  
}  
  
int GCD(int a,int b)  
{   
    //如果a < b  
    if(a < b){  
        return GCD(b,a);  
    }  
    if(b == 0){  
        return a;  
    }  
    //若x,y都为偶数  
    if(IsEvenOdd(a) == 1 && IsEvenOdd(b) == 1){  
        return 2 * GCD(a>>1,b>>1);  
    }  
    //若x,y都为奇数  
    else if(IsEvenOdd(a) == 0 && IsEvenOdd(b) == 0){  
        return GCD(b,a-b);  
    }  
    //若x是偶数y是奇数  
    else if(IsEvenOdd(a) == 1 && IsEvenOdd(b) == 0){  
        return GCD(a>>1,b);  
    }  
    //若x是奇数y是偶数  
    else{  
        return GCD(a,b>>1);  
    }  
}   

int main(){
	int a,b;
	while(scanf("%d %d",&a,&b) != EOF){
		printf("%d\n",GCD(a,b));
	}
	return 0;
}


具体解析详见:编程之美读书笔记(5)最大公约数

 

分享到:
评论

相关推荐

    求任意两个数的最大公约数的个数最多的数

    最大公约数是指两个或多个整数共有的约数中最大的一个。 #### 应用场景: - 数学计算:在数学中经常需要对分数进行化简,此时就需要找到分子分母的最大公约数。 - 编程算法:在计算机编程中,最大公约数常常用于...

    求最大公约数和最小公倍数

    2.编写两个函数,分别求两个整数的最大公约数和最小公倍数

    小学五年级奥数举一反三第周最大公约数PPT学习教案.pptx

    - 求最大公约数的方法包括分解质因数和短除法。例如,通过分解质因数75=3×5×5,60=2×2×3×5,可以发现75和60的最大公约数是3×5=15。 4. **应用举例**: - 在裁剪纸张的问题中,要将长方形纸裁成正方形且无...

    用最大公因数或最小公倍数解决问题的题目.doc

    例如,4和6的最大公因数是2,因为4和6都可以被2整除,且2是它们的最大公约数。 4. 判断题: - 互质的两个数不一定都是质数,如4和5互质,但4不是质数。 - 两个不同的奇数可能是互质的,但不是一定,例如9和15不是...

    Python编程题目-最大公约数和最小公倍数.docx

    1. **最大公约数(GCD)**:最大公约数是两个或多个非零整数共有的最大正因数。对于给定的两个整数a和b,如果存在一个正整数c,使得a、b都能被c整除,且没有更大的正整数有此性质,那么c就是a和b的最大公约数。在...

    对求最大公约数进行白盒测试

    ### 对求最大公约数进行白盒测试的知识点详解 #### 实验目的 - **掌握静态白盒测试方法及一般要求**:了解如何通过分析源代码结构来发现软件缺陷,包括但不限于代码审查、符号执行等技术。 - **掌握白盒测试用例的...

    最大公约数的实例

    此外,除了欧几里得算法,还有其他方法可以求解最大公约数,如辗转相除法(也叫更相减损法)、质因数分解法等。每种方法都有其适用场景和效率差异,理解这些算法的原理有助于我们在实际问题中做出最佳选择。 在实际...

    找最大公因数练习题及答案精选.doc

    练习题是提高数学技能的有效手段,尤其是在学习最大公因数时,通过实际操作题目,学生可以加深对概念的理解,并学会如何应用到不同类型的数学问题中。在《找最大公因数练习题及答案精选.doc》文档中,精选的习题不仅...

    C语言上机题目.rar 包括冒泡,最大公约数,最小公倍数,等

    最大公约数是指两个或多个非零整数共有的最大正因数。在C语言中,可以使用辗转相除法(欧几里得算法)或更相减损法来求解。辗转相除法通过不断用较大的数除以较小的数,然后取余数,直至余数为0,最后的除数就是...

    公因数、最大公因数练习题精选.doc

    此外,本资源还提供了一些实际应用题目,例如,排队问题、 vòng围成一圈的问题等,这些问题可以帮助学生更好地理解公因数和最大公因数的应用价值。 本资源提供了一些有价值的练习题,可以帮助学生更好地理解和掌握...

    从键盘输入两个正整数,求这两个正整数的最小公倍数和最大公约数,并输出。

    从键盘输入两个正整数,求这两个正整数的最小公倍数和最大公约数,并输出。 输入 输入包括一行。 两个以空格分开的正整数。 输出 两个整数的最小公倍数和最大公约数。 样例输入 6 8 样例输出 24 2

    第43课 最大公约数 《小学生C++趣味编程》PPT 源码 课后题答案等(2021.08.22).rar

    4. **课后题答案**:文件中包含的“动动脑”题目可能是一些与最大公约数相关的实践问题,例如“第43课 最大公约数(完整)02 动动脑 第1题.cpp”等,这些题目可能是对理论知识的应用检验,而对应的解答文件可以帮助...

    最大公约数和最小公倍数(C语言)

    在编程领域,最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)是基本的数论概念,它们在处理整数运算时经常被用到。在这个C语言的例子中,我们看到如何编写一个程序来计算两...

    C语言求最大公约数和最小公倍数算法总结

    C语言求最大公约数和最小公倍数算法总结 C语言中求最大公约数和最小公倍数的各种算法总结,包括辗转相除法和穷举法等。辗转相除法又名欧几里德法,是一种经典的算法,用于计算两个正整数的最大公约数和最小公倍数。...

    输入两个正整数m和n,求其最大公因数和最小公倍数

    Java练习题:输入两个正整数m和n,求其最大公因数和最小公倍数

    输入两个正整数m和n,求其最大公约数和最小公倍

    输入两个正整数m和n,求其最大公约数和最小公倍 数。

    求出这些整数对的最大公约数

    有一个文件,其中含有一些整数对,求出这些整数对的最大公约数,并对这些最大公约数按从小到达的顺序排序输出

    最大公约数和最小公倍数复习PPT课件.pptx

    - 如题目中的练习,如16和24的最大公约数是4,最小公倍数是48。 - 求18和30的最大公约数,可以发现18是30的约数,所以最大公约数是18。 通过以上知识点的阐述,我们可以了解到最大公约数和最小公倍数的概念、计算...

    输入两个正整数m和n求其最大公约数和最小公倍数 (2).pdf

    1. **最大公约数(GCD)和最小公倍数(LCM)**:这是基本的数论问题,可以使用欧几里得算法(辗转相除法)来解决。 2. **字符统计**:涉及字符串遍历和计数,通常使用循环和条件判断实现。 3. **位数计算**:通过...

    PTA-公因数与公约数

    最大公因数(Greatest Common Divisor,简称GCD),也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。整数m和n的最大公约数记为GCD(m, n)。 最小公倍数(Least Common Multiple,简称LCM)是指两个...

Global site tag (gtag.js) - Google Analytics