c语言求最大公约数的函数,c语言题目及答案
大家好,今天给各位分享c语言求最大公约数的函数的一些知识,其中也会对c语言题目及答案进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
c语言求最大公约数代码
c语言求最大公约数代码:
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)//因为是vs编译器,不承认scanf函数,其他编译器可忽略
int gcd(int i, int j)
{
int a;
if(i< j)//交换变量值
{
a= i;
i= j;
j= a;
}
while(j!= 0){
a= i% j;
i= j;
j= a;
}
return i;
}
int main()
{
int x;
int y;
scanf("%d%d",&x,&y);
int c= gcd(x, y);
printf("%d
", c);
system("pause");
return 0;
}
解题分析:
极大公数,也称最大公约数、最大公因子,指两个或更多的整数共有约数中最大的一个;最小公倍数是指两个或多个整数共同拥有的倍数,称为它们的公倍数,而除0以外的最小公倍数称为两个整数的最小公倍数。最小公倍=两整数的乘积=最大公约数,因此如何确定最大公约数是关键。
由于2将 b=r1q2改为 b=r1q2,则b1r1的公约数必须是a1b公约数。因为一个数可以同时除 b和r1之外,那么就必须能够整除 a,因此,对于a1b,也就是 a的公约数。相反,如果一个数 d,能够同时整除a1b,则由1)式,就一定能整除r1,因此,它的公约数 d是b1r1。
C语言之求最大公约数
这个函数是用的辗转相除法来求最大公约数;
用(a,b)来表示a和b的最大公约数。
有定理:已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c)。(证明过程请参考其它资料)例
:求 15750与27216的最大公约数。
解:
∵27216=15750×1+11466∴(15750,27216)=(15750,11466)
∵15750=11466×1+4284∴(15750,11466)=(11466,4284)
∵11466=4284×2+2898∴(11466,4284)=(4284,2898)
∵4284=2898×1+1386∴(4284,2898)=(2898,1386)
∵2898=1386×2+126∴(2898,1386)=(1386,126)
∵1386=126×11∴(1386,126)=126
所以(15750,27216)=216
也就是说不断用较大的数除以较小的数(再将较小的数作为大数;将余数作为小数)直到余数为0
C语言程序设计如何求最大公约数
具体操作步骤如下:
一、新建一个C语言源程序,使用Visual C++6.0的软件。
二、从键盘中输入两个正整数a和b。代码:printf("please input two number:
");int a,b;scanf("%d%d",&a,&b)。
三、取两个数a,b中的较小值存放到变量n中。代码:int n=a;if(n>b)n=b。
四、从两个数a和b中的较小数开始逐个减小1,寻找能整除a和b的整数。第一个找到的整数即整数a和b的最大公约数。
五、点击工具栏的如图图标,对源程序编译运行。
六、测试输入4,6,得到最大公约数2。程序是正确的,以测试更多的数。
七、
上面面步骤是编程的思路,给出完整代码,方便复制使用。#include<stdio.h>void main(){printf("please input two number:
"); int a,b;;scanf("%d%d",&a,&b);//从键盘输入两个数 int n=a;;f(n>b) n=b;//取两个数中的较小数 for(int i=n;i>=1;i--){ if(a%i==0&&b%i==0){ printf("最大公约数:%d
",i); break;}}}。
OK,本文到此结束,希望对大家有所帮助。