#include <stdio.h>
int i,j,t,n;
int main()
{
int test1();
int test2();
int test3();
printf("请输入两个数:");
scanf("%d %d",&i,&j);
if( (i <= 0) || (j <= 0) )
{ //数据检查
printf("除数不能为0");
getchar();
getchar();
return 0;
}
test1();
test2();
test3();
getchar();
getchar();
return 0;
}
int test1()//穷举法
{
if(i>j)//判断两个数大小
{
t=i;
i=j;
j=t;
}
for(t=i;t>0;t--)
{
if(i%t==0&&j%t==0)
{ printf("最大公因数为%d\n",t);
break;
}
}
return 0;
}
int fun(int, int);
int test2()//辗转相除法
{
n = ( i > j ? fun(i,j) : fun(j,i) ); //调用函数并处理大小顺序
printf("最大公因数为%d\n",n);
return 0;
}
int fun(int i,int j)
{
int r;
while(j){ //因为j的初值不为0,所以循环有效。当j=0时,余数r=0,循环终止。
r = i % j; //取余数
i = j; //除数作被除数
j = r; //商作除数
}
return i; //i就是最后的除数
}
int test3() //相减法
{
while(1)
{
if(i>j)
{
i = i-j;//将两个数的差值赋给最大的一个
}
else if(i<j)
{
j = j-i;
}
else
{
printf("最大公因数为%d\n",j);
break;//跳出整个循环
}
}
return 0;
}
int i,j,t,n;
int main()
{
int test1();
int test2();
int test3();
printf("请输入两个数:");
scanf("%d %d",&i,&j);
if( (i <= 0) || (j <= 0) )
{ //数据检查
printf("除数不能为0");
getchar();
getchar();
return 0;
}
test1();
test2();
test3();
getchar();
getchar();
return 0;
}
int test1()//穷举法
{
if(i>j)//判断两个数大小
{
t=i;
i=j;
j=t;
}
for(t=i;t>0;t--)
{
if(i%t==0&&j%t==0)
{ printf("最大公因数为%d\n",t);
break;
}
}
return 0;
}
int fun(int, int);
int test2()//辗转相除法
{
n = ( i > j ? fun(i,j) : fun(j,i) ); //调用函数并处理大小顺序
printf("最大公因数为%d\n",n);
return 0;
}
int fun(int i,int j)
{
int r;
while(j){ //因为j的初值不为0,所以循环有效。当j=0时,余数r=0,循环终止。
r = i % j; //取余数
i = j; //除数作被除数
j = r; //商作除数
}
return i; //i就是最后的除数
}
int test3() //相减法
{
while(1)
{
if(i>j)
{
i = i-j;//将两个数的差值赋给最大的一个
}
else if(i<j)
{
j = j-i;
}
else
{
printf("最大公因数为%d\n",j);
break;//跳出整个循环
}
}
return 0;
}