今天给各位分享c语言求最大公约数的知识,其中也会对C语言求最大公约数函数进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
1、相减法
#includelt;stdio.hgt;
intmain()
{
inta,b;
intc=0;//计数器
while(1)//循环判断的作用
{
printf("输入两个数字求最大公约数:");
scanf("%d%d",a,b);
while(a!=b)
{
if(agt;b)
a=a-b;
else
b=b-a;
c++;
}
printf("最大公约数是:%d ",a);
printf("%d ",c);
}
return0;
}
运行效果:
2、辗转相除法:
#includelt;stdio.hgt;
inta,b,temp;
intDivision(){
printf("请输入两个数(a,b): ");
scanf("%d,%d",a,b);
if(alt;b){
temp=a;
a=b;
b=temp;
}
while(a%b!=0){
temp=a%b;
a=b;
b=temp;
}
printf("最大公约数为:%d ",b);
return0;
}
3、穷举法
#includelt;stdio.hgt;
intmain()
{
inta,b,c;
intd=0;//计数器
while(1)
{
printf("输入两个数字求最大公约数:");
scanf("%d%d",a,b);
c=(agt;b)?b:a;//三目运算符
while(a%c!=0||b%c!=0)
{
c--;
d++;
}
printf("最大公约数是:%d ",c);
printf("%d ",d);
}
return0;
}
最大公约数算法:
(1)辗转相除法
两整数a和b:
①a%b得余数c
②若c=0,则b即为两数的最大公约数,结束
③若c≠0,则a=b,b=c,再回去执行①
(2)相减法
两整数a和b:
①若ab,则a=a-b
②若ab,则b=b-a
③若a=b,则a(或b)即为两数的最大公约数,结束
④若a≠b,则再回去执行①
(3)穷举法:
①i=ab中的小数
②若a,b能同时被i整除,则i即为最大公约数,结束
③i--,再回去执行②
1、新建一个C语言源程序,这里使用VisualC++6.0的软件:
2、从键盘中输入两个正整数a和b。取两个数a,b中的较小值存放到变量n中。从两个数a和b中的较小数开始逐个减小1,寻找能整除a和b的整数,第一个找到的整数即整数a和b的最大公约数,最后将找到的结果输出即可完成程序的编写:
3、对源程序编译运行,测试输入4、6,得到最大公约数2说明程序是正确的,以上就是用c语言求最大公约数的过程:
关于c语言求最大公约数的内容到此结束,希望对大家有所帮助。