一、问题描述:求N个数的最大公约数和最小公倍数。
要求:1.程序风格良好(使用自定义注释模板);
2.提供友好的输入输出,并进行输入数据的正确性验证。
二、流程图:
最大公约数:
最小公约数:
三、程序实现:
//问题描述:求N个数的最大公约数和最小公倍数
// WanTing Wang
// 2019.03
#include <stdio.h>
#include <math.h>
//辗转相除法
int gys(int x,int y){
int a;
if(x<y){ //将大的数排在前面
a=x;
x=y;
y=a;
}
while(x%y!=0){ //一直循环直到y是x的因数
a=x%y;
x=y; // 不断取除数 作为x
y=a; //不断取余数 作为y
}
return y; //当y是x的因数时,y就是最大公因数
}
int gbs(int x,int y){
int result=(x*y)/(gys(x,y));
return result;
}
int main(){
int t;
scanf("%d",&t);
int i,x,y;
scanf("%d",&x);
int gys1=x,gbs1=x;
for(i=1;i<t;i++){
scanf("%d",&y);
gys1=gys(gys1,y);
gbs1=gbs(gbs1,y);
}
printf("最大公约数和最小公倍数为:");
printf("%d %d",gys1,gbs1);
}
四、测试