马上求解······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; }前段时间正好要用到这两个数,不过我这个不是单求两个整数,而是可以求一个数组的最大公约数,最小公倍数。