num1=x;num2=y;
t=num1%num2;
while(t!=0)
{ num1=num2;num2=t;t=num1%num2; }
printf("zdgys=%d\n",num2);
return 0;
}运行结果如图1: 图1
(2)相减法
算法思想:用两个数中的较大数减去较小数,若所得的差与小数相等,则该所得的差为最大公因数。若不等,对所得的差和小数,继续用大数减去小数,直到所得的差和较小的数相等为止。
例2:还以m=40,n=15为例,40-15=25(25>15),25-15=10(10<15),15-10=5(5<10),10-5=5(5=5),所以,40和25的最大公因数为5。
程序如下:
#include<stdio.h>
main( )
{
int x,y,m,n,t;
scanf("%d,%d",&x,&y);
m=x;n=y;
while (m!=n)
if (m>n)
m=m-n;
else
n=n-m;
printf( "zdgys=%d\n" , m);
return 0;
}
C语言中的经典算法研究(2):http://www.751com.cn/jisuanji/lunwen_69511.html