问题描述
给定两个数求他们的最大公约数
问题分析:
对于最大公约数我们常用的一种思路就是通过枚举将两个数可以除尽的值一一列举出来,先不说代码的运行是否过于复杂,最简单我们自己计算验证一个个的找,相对较小的数我们还能计算一下,如果过大那我们写代码来解放双手就非常有必要!
解决方案:
方法一:
枚举法
#include <stdio.h> int main() { int a,b; printf("请输入两个数字:"); scanf("%d %d",&a,&b); int t = 0; int min; if(a>b){ min = b; }else{ min = a; } int i; for(i = 1;i < min;i++){//从1开始遍历看看哪个数能a和b都能除 if(a % i == 0){ if(b %i == 0){ t = i; } } } printf("最大公约数为:%d",t); }
不是说不行就是麻烦,但是容易想到容易理解
方法二:
#include <stdio.h> int main() { int a,b; printf("请输入两个数求他们的最大公约数:"); scanf("%d %d",&a,&b); int t; while(b != 0){ t=a%b; a=b; b=t; } printf("最大公约数是:%d",a); }