C语言求最大公约数、最小公倍数

天天见闻 天天见闻 2022-05-03 社会 阅读: 179
摘要: b)的公约数相同,其最大公约数也必然相等,得证。用C语言写的求最大公约数的代码:二、求最小公倍数知道了如何求最大公约数,那么有没有什么好方法求最大公倍数?因此,只要求得a,b的最大公约数c,则a,b的最小公倍数即为(a*b)/c

a可以表示成a = k*b + r(a,b,k,r皆为正整数,且r

假设d1是a,b的一个任一 公约数,即a和b都可以被d1整除。

而r = a - k*b,两边同时除以d1,r/d1=a/d1-k*b/d1=m1,由等式右边可知m1为整数, 因此d也是b,a mod b的公约数。

假设d2是b,a mod b的任一公约数, 则(a mod b)/d2=(a-k*b)/d2=a/d2-k*b/d2=m2,易知m2是一个整数。

进而a/d2=m2+k*d/d2结果为一个整数,因此d2也是a,b的公约数

因此(a,b)和(b,a mod b)的公约数相同,其最大公约数也必然相等,得证。

那么求a,b的最大公约数转换成了求b,a mod b的最大公约数(假设b > b),问题规模变小,可以不断重复以上过程直至某个数变成零,则另一个非零数即为所求。可以归纳为:若a,b全为零则最大公约数不存在,若a、b其中之一为零,则最大公约数为非零那一个;若两个都不为零,则新a=旧b,新b=旧a mod 旧b然后重复,容易看出这是一个递归的过程。

用C语言写的求最大公约数的代码:

#include
int gcd(int num1,int num2)						
{//本函数实现递归求最大公约数
	if(num2==0) return num1;							//若num2为0则num1为最大公约数
	else return gcd(num2,num1%num2);					//否则,改为求num2与num1%num2的最大公约数
}
int main()
{
	int num1,num2;
	int ans;
	while (scanf("%d%d",&num1,&num2)!=EOF)
	{
		if(num1<=0&&num2<=0) 
		{
			printf("输入错误!");
			break;
		}
		if(num1

二、求最小公倍数

知道了如何求最大公约数,那么有没有什么好方法求最大公倍数?

同样设两个非负整数a、b,其乘积k=a*b,又设c为a、b的一个公约数,则有k/c=(a*b)/c=(a/c)*b=a*(b/c),可知k/c是个整数c语言求最大公约数,且k/c即为a的倍数又是b的倍数(a,b公倍数)c语言求最大公约数,那么要使k/c为最小则c为最大公约数。

因此,只要求得a,b的最大公约数c,则a,b的最小公倍数即为(a*b)/c

黑框运行结果:

后记:

再一次证明学好数学很重要。。

其他相关
C语言求最大公约数常用三种算法

C语言求最大公约数常用三种算法

作者: 天天见闻 时间:2022-05-03 阅读: 201
第一步:任意给定两个正整数;判断它们是否都是偶数。则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。其中所说的“等数”,就是最大公约数。所以更相减损法也叫等值算法。例1.用更相减损术求98与63的最大公约数。例2.用更相减损术求260和104的最大公约数。所以,260与104的最大公约数等于13乘以第一步中约掉的两个2,即13*2*2=52。...
C语言:求最大公约数和最小公倍数!

C语言:求最大公约数和最小公倍数!

作者: 天天见闻 时间:2022-05-02 阅读: 204
相信大家对最大公约数和最小公倍数一定不会陌生吧,那么在这里我就不做太多的解释了,直接上代码:#4:a:c:2:b:1:c:c:a:9:9:1:a:f:7:1:c:e:8:c:1:0:3:2:0:2:c:b:b:d:1:6#方法1和方法2其实是一样的,就是函数中的两种不同表示而已,大家选择自己比较熟悉的方法写就行了!...
灌篮高手国语版

灌篮高手国语版

作者: 天天见闻 时间:2022-02-22 阅读: 1929
灌篮高手国语版免费观看完整版,由导演西泽信孝,志水淳儿执导,1993年上映的《灌篮高手国语版》,是由草尾毅,绿川光,梁田清之,置鲇龙太郎,盐屋翼,原惠理子,平松晶子,田中秀幸,小野坂昌也,神奈延年,西村知道,森川智之,干本雄之,盐屋浩三,佐藤正治,江川央生,川津泰彦,大塚芳忠,石川英郎的动漫。进入高中后灌篮高手国语版,樱木看上了美少女赤木晴子,晴子十分热爱篮球,为了赢取晴子的芳心,樱木决定加入篮球部。...
详细解析属马的今年多大,1978年出生的属马人今年都40了

详细解析属马的今年多大,1978年出生的属马人今年都40了

作者: 天天见闻 时间:2022-02-25 阅读: 650
1978年出生的属马人今年多大呢?2014年出生的属马人,2017年实岁3岁,虚岁4岁。壬午年出生的属马的人,你们今年情绪极度不稳定,容易和家人朋友发生不愉快的争执,建议要保持平稳的生活态度,出生在2002年的午马们进入到2017丁酉年之后所面临的大多都是学业上的问题,这个年龄段的人不需要考虑如何去工作去赚钱属马的今年多大了属马的今年多大了,也不应该将自己的心思都花在男女感情上,毕竟这些对于现在的午马们来说还很遥远。...
余额宝存一万的话,一天收益有多少?

余额宝存一万的话,一天收益有多少?

作者: 天天见闻 时间:2022-02-25 阅读: 675
其实这是要看具体的情况而定,因为有的时候他的收益要高一些,有的收益要低一些,对于2020年余额宝存1万一天能有多少收益呢?在维持风险性合理的情况下余额宝1万一天收益多少,做一些小的投资还是很有必要的。...
电子烟和香烟哪个危害大?电子烟到底有危害吗?

电子烟和香烟哪个危害大?电子烟到底有危害吗?

作者: 天天见闻 时间:2022-02-26 阅读: 523
据英国公共卫生部发表的一份专家独立证据评论结论,电子烟对健康的危害远远小于烟草,并有可能帮助吸烟者戒烟。由PHE委托并由Ann McNeill教授和Peter Hajek教授领导的这项审查表明,电子烟可能导致成年人和年轻人的吸烟率下降。它还让人放心电子烟和香烟哪个危害大,很少有从未吸烟的成年人和年轻人成为常规的电子烟使用者。...
我来说两句

年度爆文