主题:[讨论]两种 c 语言版求最大公约数方法的比较~~
我在参考书上看到的求最大公约数的思路是这样的:
#include "stdio.h"
#include "conio.h"
void main()
{
int m,n,i,temp;
printf("Input two number:\n");
scanf("%d%d",&m,&n);
//交换两个数,使得循环时 i 的值由较小的数开始递减
if(m > n)
{
temp = m;
m = n;
n = temp;
}
//循环开始,i 的值由较小的数开始递减,直到出现符合条件的值,i 的取值范围是 i > 0
for(i = m;i > 0;i --)
if(0 == m % i && 0 == n % i)
{
printf("the max is :%d\n",i);
break;
}
getch();
}
我自己看的有关求最大公约数是使用的辗转相除法,如下:
#include "stdio.h"
#include "conio.h"
void main()
{
int m,n,r,temp;
printf("Input two number:\n");
scanf("%d%d",&m,&n);
//交换两个数,使得被除数总是大于除数
if(m < n)
{
temp = m;
m = n;
n = temp;
}
//循环开始,辗转相除法:
for(r = m % n;r > 0;)
{
m = n;
n = r;
r = m % n;
}
printf("the max gongyueshu is :%d\n",n);
}
这两种方法哪一种比较好?
#include "stdio.h"
#include "conio.h"
void main()
{
int m,n,i,temp;
printf("Input two number:\n");
scanf("%d%d",&m,&n);
//交换两个数,使得循环时 i 的值由较小的数开始递减
if(m > n)
{
temp = m;
m = n;
n = temp;
}
//循环开始,i 的值由较小的数开始递减,直到出现符合条件的值,i 的取值范围是 i > 0
for(i = m;i > 0;i --)
if(0 == m % i && 0 == n % i)
{
printf("the max is :%d\n",i);
break;
}
getch();
}
我自己看的有关求最大公约数是使用的辗转相除法,如下:
#include "stdio.h"
#include "conio.h"
void main()
{
int m,n,r,temp;
printf("Input two number:\n");
scanf("%d%d",&m,&n);
//交换两个数,使得被除数总是大于除数
if(m < n)
{
temp = m;
m = n;
n = temp;
}
//循环开始,辗转相除法:
for(r = m % n;r > 0;)
{
m = n;
n = r;
r = m % n;
}
printf("the max gongyueshu is :%d\n",n);
}
这两种方法哪一种比较好?