马上求解······c++题目
											求两个正整数的最大公约数和最小公倍数										
					
	 2011-04-18 21:16
	    2011-04-18 21:16
   程序代码:
程序代码:
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));
}
										
					
	 2011-04-18 21:57
	    2011-04-18 21:57
   程序代码:
程序代码:#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;
}相对简单的~~										
					
	 2011-04-18 23:17
	    2011-04-18 23:17
   程序代码:
程序代码: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;
}前段时间正好要用到这两个数,不过我这个不是单求两个整数,而是可以求一个数组的最大公约数,最小公倍数。 2011-04-19 10:56
	    2011-04-19 10:56
  
 2011-04-19 22:03
	    2011-04-19 22:03