作业帮 > 综合 > 作业

求高手c++编程.求输入两个数,计算其最小公倍数与最大公约数之差.用函数嵌套

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/23 08:52:09
求高手c++编程.求输入两个数,计算其最小公倍数与最大公约数之差.用函数嵌套
怎么把算好的最大公约数值传给计算最小公倍数的函数?
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

void swap(int *x,int *y),Difference(int n1,int n2);
int GCD(int n1,int n2),LCM(int n1,int n2);
int main(){

int num1,num2;
cout<<"请输入两个正整数(空格隔开):";
cin>>num1>>num2;

swap(&num1,&num2);
Difference(num1,num2);

return 1;
}
void swap(int *x,int *y){
int temp;
if(*y>*x){
temp=*x;
*x=*y;
*y=temp;
}
}
int GCD(int n1,int n2){ // 求最大公约数
return (n1*n2)/LCM(n1,n2); // 两个数的最大公约数=两数的乘积/最小公倍数,
                           // 或者两个数的最小公倍数=两数的乘积/最大公约数.
}
int LCM(int n1,int n2){ // 求最小公倍数

int max=n1,mult=1,target;
bool IsFactor;
while (true){

        target=mult*max;
IsFactor=true;
if((target%n1!=0)||(target%n2!=0)) IsFactor=false;

if(IsFactor) return target;
mult++;
}
}
void Difference(int n1,int n2){// 求两数的最小公倍数与最大公约数之差

// 在数学里,一般两个数的最小公倍数都是大于它们的最大公约数的.
printf("%d,%d的最小公倍数=%d 最大公约数=%d\n它们的差=%d\n",n1,n2,LCM(n1,n2),GCD(n1,n2),
LCM(n1,n2)-GCD(n1,n2));
}