马上求解······c++题目
求两个正整数的最大公约数和最小公倍数
程序代码:
int gcd(int a, int b)
{
return b? gcd(b,a%b):a;
}
int lcm(int a, int b)
{
return a*(b/gcd(a,b));
}
程序代码:#include <iostream>
using namespace std;
int hcf (int a, int b)
{
int r, t;
if (a < b)
{
t = a; a = b; b = t;
}
r = b % a;
while (r != 0)
{
b = a;
a = r;
r = b % a;
}
return a;
}
int lcf (int a, int b)
{
return a * (b / hcf(a,b));
}
int main()
{
int x, y;
cout<< "输入两个整数:" <<endl;
cin>> x >> y;
cout<< "最大公约数:" << hcf(x,y) << " 最小公倍数:" << lcf(x,y) <<endl;
return 0;
}相对简单的~~
程序代码:int Lcm(int *pn, int amount)//最小公倍数,*pn是数组,amount是数组的长度
{
int MaxData = pn[0];
int LimitI = pn[0];
for (int i=1;i<amount;i++)
{
LimitI *= pn[i];
if (MaxData<pn[i])
MaxData=pn[i];
}
int j;
for (i=MaxData;i<LimitI;i++)
{
for (j=0;j<amount;j++)
{
if (i%pn[j]!=0)
break;
}
if (j==amount)
break;
}
return i;
}
int Gcd(int *pn, int amount)//最大公约数,*pn是数组地址,amount是数组长度
{
int MinData = *pn;
for (int i=1;i<amount;i++)
{
if (MinData>pn[i])
MinData = pn[i];
}
int j;
for (i=MinData;i>0;i--)
{
for (j=0;j<amount;j++)
{
if (pn[j]%i!=0)
break;
}
if (j==amount)
break;
}
return i;
}前段时间正好要用到这两个数,不过我这个不是单求两个整数,而是可以求一个数组的最大公约数,最小公倍数。