1、题目:
求N个数的最大公约数和最小公倍数。
2、算法设计思路:
辗转相除法:
3、具体代码
#include <stdio.h>
#include <malloc.h>
int Gcd(int x,int y){
int b;
if(x<y){
b=x;
x=y;
y=b;
}
while(x%y!=0){
b=x%y;
x=y;
y=b;
}
return y;
}
int Lcm(int x,int y){
int result=(x*y)/(gys(x,y));
return result;
}
int main(){
int n;
printf("请输入求几个数字:\n");
scanf("%d",&n);
int i,x,y;
printf("请输入:\n");
scanf("%d",&x);
int gcd=x,lcm=x;
for(i=1;i<n;i++){
scanf("%d",&y);
gcd=Gcd(gcd,y);
lcm=Lcm(lcm,y);
}
printf("最大公约数:\n%d\n最小公倍数:\n%d",gcd,lcm);
}
4、调试、运行截图:
5、总结:
通过这次上机的练习,掌握了求多个数字的最大公约数和最小公倍数的方法,但是仍然存在很多不足,希望在后面的练习中能认真总结,及时发现问题并改正。