参考代码:
写的不好看,但思路还是比较清晰的,暂时也没出现bug
#include
void f14(int m,int n){
int i=0;
int num=1;
int temp1=m,temp2=n;//用两个变量寄存m,n的值
int min=m for(i=2;i<=min;i++){ if((m%i==0)&&(n%i==0)){ //printf("%d\n",i); num*=i; m=m/i; n=n/i; min=min/i; i=1;//i的还原,不然在执行一次循环体后,i++=3,下次循环时,会将i=2这个商给跳过,出现问题 //printf("%d\n",min); } } printf("最大公约数为:%d\n",num); printf("最小公倍数为:%d\n",temp1*temp2/num); } int main(){ printf("请输入两个数:"); int m,n; scanf(" %d %d",&m,&n); f14(m,n); return 0; }Zayn Zayn 267***5830@qq.com 7年前 (2018-10-14)