按你的思路寫的代碼,看是否符合你的要求?
#include <iostream>
using namespace std;
class lcm_gcd
{
int X;
int Y; //存取傳入?yún)?shù)值
int s[20]; //存放質因子
int si; //存放每次判斷質因子的積
int slength;//存放s[20]的長度
public:
lcm_gcd(int,int); //定義構造函數(shù)
void lcm(); //定義最小公倍數(shù)函數(shù)
void zhiyz(int); //定義質因子函數(shù)
};
lcm_gcd::lcm_gcd(int a,int b)
{
X=a;
Y=b;
}
void lcm_gcd::lcm(){
zhiyz(X);
si=1;
for(int i=0;i<slength;i++)
{
for(;X%s[i]==0&&Y%s[i]==0;)
{ si=si*s[i];
X=X/s[i];
Y=Y/s[i];
}
}
cout<<"最小公倍數(shù):"<<si*X*Y<<endl;
}
void lcm_gcd::zhiyz(int a) { //求質因子
slength=0;
int n,n0,i=2,j=0;
int tmp=0;
n=a;
n0=n;
while(n0>=i)
{
if(n0%i==0)
{
if(i!=tmp)
{ s[j]=i;
j++;
slength++;
tmp=i;
}
n0 /= i;
}
else
i++;
}
if(n0!=1 && n0!=tmp)
{
s[j]=n0;
slength++;
}
int k=slength;
}
void main()
{
int a,b;
cout<<"輸入兩個整數(shù)"<<endl;
cin>>a>>b;
lcm_gcd aa(a,b);
aa.lcm();
}