自己写的一个小代码,测试正常,仅作参考。欢迎大家批评。
程序代码:
/***********************************************************************
对于LZ的程序,我就不作评定了,总之结果不对,格式也不对。
我作了一个辗转相除法的程序,运行正常,请楼主参考一下。
由于我也初学,不足之处,还望海涵。
************************************************************************/
#include<stdio.h>
void jiaohuan(int *a,int *b)/*交换函数,用于排序*/
{
int t;
t=*a;
*a=*b;
*b=t;
}
int main(void)
{
int zhengsu_a,zhengsu_b,yusu;/*定义三个整型变量*/
char c;
do
{
printf("\n**************************************************\n\n");
printf("请输入两个正整数,空格格开,enter结束输入:\n");
scanf("%d %d",&zhengsu_a,&zhengsu_b);
puts(" ");
while(c=getchar()!='\n'&&c!=EOF);
if(zhengsu_a<0||zhengsu_b<0)
printf("您输入的数字不合法,请重新输入.\n\n");
} /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~输入两个数*/
while(zhengsu_a<0||zhengsu_b<0);
if(zhengsu_a<zhengsu_b)
jiaohuan(&zhengsu_a,&zhengsu_b);/*如果被除数小于除数,交换*/
while(zhengsu_b!=0)
{
yusu=zhengsu_a%zhengsu_b;
zhengsu_a=zhengsu_b;
zhengsu_b=yusu; /*辗转相除法的公式,用于求出最大公约数。程序中的精髓也就在于此。
如果把这个while弄明白了,也就会求最大公约数,也会最小公倍数了。*/
}
if(zhengsu_a!=1)
printf("最大公约数为:%d\n",zhengsu_a);
else
printf("这两个数没有最大公约数。\n");/*如果最大公约数为1,系统判定它们两数无最大公
约数*/
getch();
}