用C#写如何求最大公约数

rainlow 2004-07-13 08:48:19
用C#写如何求最大公约数??
...全文
1230 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
test7979 2004-07-13
  • 打赏
  • 举报
回复
to 楼上,递归不是最简捷的,

这个问题的最佳答案是辗转相除法

最简洁,也是最快的
liubinbill 2004-07-13
  • 打赏
  • 举报
回复
递归确实最简洁了。

在用递归之前最好能保证a>=b>0;
可以自己添一段代码 。

strawwan 2004-07-13
  • 打赏
  • 举报
回复
最简单的方法就是用递归;
private int fun(int a,int b)
{
if(a%b == 0){return b;}
return fun(b,a%b);
}
test7979 2004-07-13
  • 打赏
  • 举报
回复
不可以说这个函数的, 因为 G。C。D, 哈哈

所以这个函数我就不贴了
Jinniu 2004-07-13
  • 打赏
  • 举报
回复
private int GetValue(int i,int j)
{
int k;
if(i < j)
{
k = j;
j = i;
i = k;
}
int r = i%j;
while(r != 0)
{
i = j;
j = r;
r = i%j;
}
return j;
}
算法都不记得了,这个是翻译lxcc(虫子)的办法,我只是提供一个c#的实现!
wxqq2001 2004-07-13
  • 打赏
  • 举报
回复
两种算法:首先判断使a,b 都是正整数且a>b;

private int fun(int a,int b)
{
int i;
for(i=a;i>0;i--)
{
if((a%i==0)&&(b%i==0))break;

}
return i;
}

private int fun2(int a,int b)
{
int d;
for(;;)
{
d=a%b;
if(d==0)break;
a=b;
b=d;
}
return b;
}
nannan2005 2004-07-13
  • 打赏
  • 举报
回复
return n
nannan2005 2004-07-13
  • 打赏
  • 举报
回复
算法如下,仅供参考。
if (m<n)
{t=m;m=n;n=t}//交换m,n
r=m mod n
while(r<>0)
{m=n;
n=r;
r=m mod n;
}
return r
ekinwt 2004-07-13
  • 打赏
  • 举报
回复
lxcc(虫子)算法比较好,可是比较复杂,数学不好的人肯定不知道为什么那样可以.(比如说我,去年刚学C的时候书上有讲过这样的算法.)
用viena(晓琴)的算法,简单.
lxcc 2004-07-13
  • 打赏
  • 举报
回复
输入两个正整数m和n,求其最大公约数a和最小公倍数b,计算最大公约数a的方法如下:先算出m/n 余数r,若r等于0,则n为最大公约数;若r不为0,则把原来的n值作为新的m值,把原来的r值作为新的n值,继续运算。这样辗转相除,直到r为0,此时的n值为最大公约数a,最小公倍数则可用原始m与n值的积除以最大公约数求得。
viena 2004-07-13
  • 打赏
  • 举报
回复
最大公约数是不是能同时被两个数整除的?不太记得了,从小的那个数开始,依次减1,看能否被两个数整除,直到试出来为止
viena 2004-07-13
  • 打赏
  • 举报
回复
遍历整除呀,一个一个试,呵呵

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧