C++计算两个数的最大公因数和最小公倍数

//Author:PanDaoxi
#include <iostream>
using namespace std;
int mcf(int x,int y){
    
     //最大公因数 
	int maxn,a[10001],k=0,big=(x>y?x:y);
	for(int i=1;i<=big;i++){
    
    
		if(x%i==0&&y%i==0) a[k++]=i;
	}
	maxn=a[0]; 
	for(int i=0;i<k;i++){
    
    
		if(maxn<a[i]) maxn=a[i];
	}
	return maxn;
}
bool coprime(int x,int y){
    
     // 是否互质
	int n=mcf(x,y);
	if(n==1) return true;
	else return false;
}
int lcm(int x,int y,int z){
    
     // 最小公倍数
	int sum=1,n=0,minn,b[10001],k=0,big=(x>y?x:y);
	if(coprime(x,y)) return x*y;
	int c=x,d=y;
	n=mcf(c,d);
	while(coprime(c,d)==false&&n!=1){
    
    
		n=mcf(c,d);
		c/=n;
		d/=n;
		b[k++]=n;
	}
	sum=c*d;
	for(int i=0;i<k;i++){
    
    
		sum*=b[i];
	}
	return sum;
}

int main(){
    
    
	int a,b;
	cin>>a>>b;
	int x=mcf(a,b);
	int y=lcm(a,b,x);
	cout<<"最大公因数:"<<x<<endl<<"最小公倍数:"<<y<<endl;
	return 0;
}

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/PanDaoxi2020/article/details/120812127
今日推荐