#include "stdio.h" /* *最大公约数函数:穷举法 */ int gcdNormal(int x, int y) { int i; int maxNumber=0; //首先判断两个数中的最大数 if(x>y) maxNumber=x; else maxNumber=y; for (i=maxNumber;i>=1;i--) { if(x%i==0 && y%i==0) return i; } return 1; } //辗转相除法求最大公约数,非递归写法 int gcdNormal1(int x,int y) { int temp; while(temp) { temp = x % y; if(temp>0) { x=y; y=temp; } else return y; } return y; } //辗转相除法求最大公约数,递归写法 int gcdNormal2(int x,int y) { int temp = x % y; if(temp>0) return gcdNormal1(y,temp); else return y; } //最小公倍数:穷举法 int lcmNomarl(int x,int y) { int minCommon = x*y; int i; //判断x和y中最大值 if(x<y) i=y; for(;i<minCommon;i++) { if(i%x==0 && i%y==0) return i; } return minCommon; } int main(void) { printf("请输入两个整数:如3 5\n"); int number1,number2; scanf("%d %d",&number1,&number2); printf("穷举法 最大公约数为:%d\n",gcdNormal(number1,number2)); printf("辗转相除法非递归 最大公约数为:%d\n",gcdNormal1(number1,number2)); printf("辗转相除法递归 最大公约数为:%d\n",gcdNormal2(number1,number2)); printf("穷举法 最小公倍数为:%d\n",lcmNomarl(number1,number2)); return 0; }