跪求一段求最大公约数的C语言算法

 我来答
百度网友e99eaa3
2010-04-21 · TA获得超过259个赞
知道答主
回答量:53
采纳率:0%
帮助的人:75.7万
展开全部
#include <stdio.h>
int gcd (int a,int b)
{
if (!b) return a;
return gcd (b,a%b);
}
int main ()
{
int a, b ;
scanf ("%d %d",&a,&b);
printf ("%d\n",gcd (a,b));
}
这个就是数论上经典的用殴几里德算法求最大公约数。其时间复杂度约为7*min (a,b).它还有一个就是碾转相除法来解。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友52aeb54
2010-04-21 · TA获得超过2995个赞
知道小有建树答主
回答量:1261
采纳率:0%
帮助的人:1154万
展开全部
#include <stdio.h>
#include <stdarg.h>

// 求2个数的最大公约数,辗转相除法
int GCD(int lhs, int rhs)
{
return rhs % lhs ? GCD(rhs % lhs, lhs) : lhs;
}

// n个数的最大公约数
int NGCD(int n, ...)
{
va_list argPtr;
va_start(argPtr, n);
int gcd = va_arg(argPtr, int);

for(int i = 1; i < n; ++i)
gcd = GCD(gcd, va_arg(argPtr, int));
va_end(argPtr);
return gcd;
}

// n个数的积
int NProduct(int n, ...)
{
int pdt = 1;

va_list argPtr;
va_start(argPtr, n);
for(int i = 0; i < n; ++i)
pdt *= va_arg(argPtr, int);
va_end(argPtr);
return pdt;
}

// n个数的最小公倍数
#define NLCM(n, ...) NProduct(n, __VA_ARGS__) / NGCD(n, __VA_ARGS__)

int main()
{
printf("GCD of 3,6,9: %d\n", NGCD(3, 3, 6, 9));
printf("LCM of 3,6,9: %d\n", NLCM(3, 3, 6, 9));

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WSN石家庄业余球王1
2010-04-21 · TA获得超过1235个赞
知道小有建树答主
回答量:880
采纳率:100%
帮助的人:369万
展开全部
void main()
{
int result=0;
int num1,num2;
scanf("%d%d",&num1,&num2);
for(int i=min(num1,num2); i>0; i--)
{
if(num1%i==0&&num2%i==0)
{
result = i;
break;
}
}
if(result==0)
{
printf("没有公约数\n");
}
else
{
printf("最大公约数为%d",result);
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vbtraz
2010-04-21 · TA获得超过5530个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4410万
展开全部
int gcd(int a, int b)
{
if ( b == 0) return a;
return gcd(b, a%b);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liu069080218
2010-04-21 · TA获得超过117个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:46.6万
展开全部
int gongyueshu(int m,int n)
{
int temp,k;

if(m<n)
{
temp=m;
m=n;
n=temp;
}
while((k=m%n)!=0)
{
m=n;
n=k;
}
return n;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式