c语言求最大公约数,最小公倍数

网编 571 0

写c语言题目时,我们经常会遇到求最大公约数和最小公倍数的问题。为了方便学习,我整理了一些用c语言求最大公约数的方法。

#最大公约数?

最大公约数,指两个或多个整数共有约数中最大的一个。

举例说,

能够整除一个整数的整数称为其的约数(如5是10约数);

如果一个数既是数m的约数c语言求最大公约数,又是数n的约数,称为m,n的公约数。m,n的公约数中最大的一个(可以包括m,n自身)称为m,n的最大公约数。

#更相减损术方法

利用更相减损术求两个整数的最大公约数,即每次将较大的数变成大数减去小数的值,当满足循环条件(两数相等)输出结果即可。

举例说,若m=4,n=6c语言求最大公约数,则m!=n且mn=2,此时m>n,执行m=m-n->m=2,m=n,输出最大公约数m=2。

#include
int main(){
    int m,n;
    scanf("%d %d",&m,&n);
    while(m!=n){     //相等即得最大公约数

c语言求杨辉三角直角三角形前8行_c语言求最大公约数_c语言求约数个数

if(mn){ n=n-m; }else if(m>n){ m=m-n; } } printf("%d",m); }

#辗转相除法

当两个数都较大时,我们一般采用辗转相除法比较方便。

即以小数除大数,如果能整除,那么小数就是所求的最大公约数;否则就用余数来除刚才的除数;若不能整除,将得到新的余数去除刚才的余数。以此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数。

#include 
int main()

c语言求最大公约数_c语言求杨辉三角直角三角形前8行_c语言求约数个数

{ int m,n,t,a,b; scanf("%d,%d",&m,&n); if(mn){ t=m;m=n;n=t; } a=m; b=n; while(b!=0){ /*①a%b得余数c ②若c=0,则b即为两数的最大公约数 ③若c≠0,则a=b,b=c,再回去执行①*/ t=a%b; a=b; b=t; } printf("%d",a); return 0; }

#穷举法

#include
int main(){
	int m,n,i,t;
	scanf("%d %d",&m,&n);
	if(mn){
		t=m;m=n;n=t;
	}
	for (i = m; i > 0; i--){
		if ((m%i == 0) && (n%i == 0)){

c语言求约数个数_c语言求杨辉三角直角三角形前8行_c语言求最大公约数

break; } } printf("%d",i); }

#最小公倍数?

如果一个数既是a又是b的倍数且这个数在a,b的所有公倍数里为最小,那这个数就是最小公倍数。

解题重点:最小公倍数=两整数的乘积÷最大公约数

#include 
int main()
{
	int m,n,t,gys,gbs,a,b;
	gys=0;gbs=0;

c语言求约数个数_c语言求杨辉三角直角三角形前8行_c语言求最大公约数

scanf("%d,%d",&m,&n); if(mn) {t=m;m=n;n=t;} a=m; b=n; while(b!=0) { t=a%b; a=b; b=t; } printf("gys=%d,gbs=%d",a,m*n/a); return 0; }

标签: #最大公约数

  • 评论列表

留言评论