两种方法,一是常规做法,二是递归做法;
#include <cstdio>
#include <iostream>
using namespace std;
int v[4]={3,4,5,6};
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int lcm(int a,int b)
{
return a*b/gcd(a,b);
}
int ngcd(int v[],int n)
{
/*int a=v[0];
int b=v[1];
int c=gcd(a,b);
for(int i=2;i<n;i++)
{
c=gcd(c,v[i]);
}
return c;*/
if(n==1)
return v[0];
return gcd(v[n-1],ngcd(v,n-1));
}
int nlcm(int v[],int n)
{
/*int a=v[0];
int b=v[1];
int c=lcm(a,b);
for(int i=2;i<n;i++)
{
c=lcm(c,v[i]);
}
return c;*/
if(n==1)
return v[0];
return lcm(v[n-1],nlcm(v,n-1));
}
int main()
{
printf("%d\n",ngcd(v,4));
printf("%d",nlcm(v,4));
return 0;
}
结果是:1 60
仅代表个人观点,欢迎交流探讨,勿喷~~~
PhotoBy:WLOP