每日一题:华为初级题库——最大公约数
<题目要求>
输入两个整数,输出其的最大公约数。
思路:找寻1-两个整数的最小数之间,能同时被两个整数整除的数。其即为最大公约数。对于负数,先将其转为正数,再去求。
易错点分析:(1)忽略负数的讨论;(2)找寻1-两个整数的最小数之间的数。
#include <iostream> using namespace std; int fabs(int x) { if(x<0) x=-x; return x; } int main() { int a,b; cin>>a>>b; a=fabs(a); b=fabs(b); int min=a>b?b:a; int max=0; for(int i=1;i<=min;i++) { if(a%i==0&&b%i==0) { if(max<i) max=i; } } cout << max<< endl; return 0; }