C语言编程,求最大公约数,用C语言求最大公约数。

2020-11-25 13:18:28 字数 6434 阅读 4695

1楼:匿名用户

#include

void main()

{int zdgy(int m,int n);

int x,y;

printf(

2楼:匿名用户

#include

int main(void)

int ***(int a,int b)

else}

3楼:匿名用户

#include

#include

int main()

i = a; j = b;

while (j != 0)

printf("最大公约数%d ", i);

printf("最小公倍数%d", (a*b)/i);

printf("\n");

return 0;}

用c语言求最大公约数。

4楼:很多很多

1、新建一个c语言源程序,这里使用visual c++6.0的软件:

2、从键盘中输入两个正整数a和b。取两个数a,b中的较小值存放到变量n中。从两个数a和b中的较小数开始逐个减小1,寻找能整除a和b的整数,第一个找到的整数即整数a和b的最大公约数,最后将找到的结果输出即可完成程序的编写:

3、对源程序编译运行,测试输入4、6,得到最大公约数2说明程序是正确的,以上就是用c语言求最大公约数的过程:

5楼:东风冷雪

#include

intzdg(intn);

intmain()

intzdg(intn)

returnm;}

6楼:

|#include

intmain(intargc,char*argv)while(b)

r=a%b,a=b,b=r;

printf("the***is%d\n",a);

return0;}

7楼:水墨尘君

#include

voidmain()

{intm,n,r,t;

scanf("%d,%d",&m,&n);

if(m

如果有疑问

,欢迎私聊我

c语言程序设计如何求最大公约数?

8楼:苏

具体操作步骤如下:

一、新建一个c语言源程序,使用visual c++6.0的软件。

二、从键盘中输入两个正整数a和b。**:printf("please input two number:\n");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。程序是正确的,以测试更多的数。

七、上面面步骤是编程的思路,给出完整**,方便复制使用。#includevoid main()}}。

9楼:河蟹蛇荟

最大公约数算法:

(1)辗转相除法

两整数a和b:

① a%b得余数c

② 若c=0,则b即为两数的最大公约数,结束③ 若c≠0,则a=b,b=c,再回去执行①(2)相减法

两整数a和b:

① 若a>b,则a=a-b

② 若a③ 若a=b,则a(或b)即为两数的最大公约数,结束④ 若a≠b,则再回去执行①

(3)穷举法:

① i= a b中的小数

② 若a,b能同时被i整除,则i即为最大公约数,结束③ i--,再回去执行②

c语言编程-求最大公约数

10楼:匿名用户

把倒数第三句“i=i+1”去掉就可以得到正确的结果了,因为break之后不会执行i--操作了

或者使用辗转相除的方法:

#include

void main()

temp = a%b;

while(temp)

printf("%d,%d的最大公约数为: %d",m,n,b);

printf("%d,%d的最小公倍数为: %d",m,n,m*n/b);}

11楼:静枫缘

//辗转相除法是古希腊求两个正整数的最大公约数的,也叫欧几里德算法,其方法是用较大的数除以较小的数,上面较小的除数和得出的余数构成新的一对数,继续做上面的除法,直到出现能够整除的两个数,其中较小的数(即除数)就是最大公约数。以求288和123的最大公约数为例,操作如下:288÷123=2余42 123÷42=2余3942÷39=1余3 39÷3=13所以3就是288和123的最大公约数。

//#include

int main()

printf("%d\n",c);

return 0;

12楼:星月小木木

求最大公约数算法:

(1)辗转相除法

两整数a和b:

① a%b得余数c

② 若c=0,则b即为两数的最大公约数,结束③ 若c≠0,则a=b,b=c,再回去执行①(2)相减法

两整数a和b:

① 若a>b,则a=a-b

② 若a

int xc_***(int a,int b)return b;

}int xj_***(int a,int b)return b;

}int qj_***(int a,int b)void main()

13楼:匿名用户

求差判定法.

如果两个数相差不大,可以用大数减去小数,所得的差与小数的最大公约数就是原来两个数的最大公约数.例如:求78和60的最大公约数.78-60=18,18和60的最大公约数是6,所以78和60的最大公约数是6.

如果两个数相差较大,可以用大数减去小数的若干倍,一直减到差比小数小为止,差和小数的最大公约数就是原来两数的最大公约数.例如:求92和16的最大公约数.92-16=76,76-16=60,60-16=44,44-16=28,28-16=12,12和16的最大公约数是4,所以92和16的最大公约数就是4.

辗转相除法.

当两个数都较大时,采用辗转相除法比较方便.其方法是:

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

例如:求4453和5767的最大公约数时,可作如下除法.

5767÷4453=1余1314

4453÷1314=3余511

1314÷511=2余292

511÷292=1余219

292÷219=1余73

219÷73=3

于是得知,5767和4453的最大公约数是73.

辗转相除法适用比较广,比短除法要好得多,它能保证求出任意两个数的最大公约数.

小学数学温习过后,先来个两个数递归版的

int get***rec(int n, int m)

if (n == 0)

return m;

else

return get***rec(n, m % n);

}辗转相除法,求一个数组中所有数的最大公约数

int get***(int *arr, int len)

iremainder = imax % icurr;

while (iremainder)

imax = icurr;

}//for

return imax;

}最小公倍数就是乘积除以最大公约数

int getlcm(int *arr, int len)

14楼:匿名用户

基本原理如下:

用欧几里德算法(辗转相除法)求两个数的最大公约数的步骤如下:

先用小的一个数除大的一个数,得第一个余数;

再用第一个余数除小的一个数,得第二个余数;

又用第二个余数除第一个余数,得第三个余数;

这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。

例如求1515和600的最大公约数,

第一次:用600除1515,商2余315;

第二次:用315除600,商1余285;

第三次:用285除315,商1余30;

第四次:用30除285,商9余15;

第五次:用15除30,商2余0。

1515和600的最大公约数是15。

15楼:匿名用户

辗转相除法还是首选的方法啊、它有效的减少了运算的时间复杂度。。

16楼:小童鞋_成

ddddddddddddddd

17楼:

int getcd(int u,int v)

return u;}

18楼:凌风

#include

void main()

{int m,n,k;

printf(

c语言编程求最大公约数和最小公倍数

19楼:刀无极啊

#include

int main()

else

res=dividend%divisor;

while(res!=0)//循环体是三条语句dao,不加大括号内循环只执行一条容语句

printf("%d",divisor);

}else

printf("error!\n");

return 0;

}两数相乘除以最大公约数就是最小公倍数

20楼:爱笑的

你用while,res没有!=0,后赋值,但是没退出循环啊,你这个成死循环了

21楼:滕鸿蒙飞跃

#include

intgcm(int

m,int

n)if(r==0)

returnn;}

intlcm(int

m,int

n,int

p)main()

22楼:睢奇姒乾

intm,n,i,j;

注意int型整数的取值范围,上限大概是6万多,

100000显然溢出,结果就不对了,可以考虑换成long、double型等修饰

23楼:亓囡亥德寿

a=b;

b=c;

c=a%b; //这个位置写错了,当上面的b=c=0时,这里会除0错将这个放到a=b前面就ok了

c语言编程求输入两个数的最大公约数和最小公倍数,怎么做?

24楼:馅喽喽喽

输入两个正整数m和n,求其最大公约数和最小公倍数.用辗转相除法求最大公约数 算法描述:m对n求余为a,若a不等于0 则 m 0)

m1=m;

n1=n;

while(n!=0)

printf("%d和%d的最大公约数是:%d\n",m1,n1,m);

printf("最小公倍数是:%d\n",m1*n1/m);

}输入两个正整数m和n,求其最大公约数和最小公倍数.用辗转相除法求最大公约数 算法描述:m对n求余为a,若a不等于0 则 m 0)

{m_cup = m;

c语言编程:输入两个正整数,求最大公约数和最小公倍数

25楼:匿名用户

1、新建一个

工程来和.c文件 ,输入头文件和源主函数。

2、定义变量类型。

3、接下来需要输入a和b。

4、用一个if 语句去判断这两个数是否大于1。

5、用while 语句去求得最大公倍数和最小公约数。

6、输出最大公约数和最小公倍数。

7、编译,运行得到最后的结果。

26楼:凌乱心扉

#include

int main()

p=n*m;

while(m!=0)

printf("它们的最大公约数为:%d\n",n);

printf("它们的最小公约数为:%d\n",p/n);

return 0;}方法

二、//穷举法解两个数的最大公约数和最小公倍数void exp(int num1,int num2)

用欧几里得算法(辗转相除法)求最大公约数,C语言编程

1楼 猴大侠来也 你的程序是正确的, 瑕疵在于 scanf d d m n scanf函数,双引号内光写格式就好了,不用写逗号什么的,多写什么程序运行的时候就要输入什么。如你所写,运行时就应输入 12,24 若你在12与24之间按的是空格或其他有可能影响到第二个变量取不到值。 所以建议改为 scan...

最大公约数和最小公倍数是干什么用的

1楼 朱泛 公约数和公倍数是比较基础的,实际生活直接应用较少。数学作为一个基础学科应用性不是很强。但是它作为基础是非常重要的,比如数论这个学科,计算机应用中很常见,数论可应用在设置密码和破解密码。 还有常说的微积分,是很多学科的必修科目 2楼 匿名用户 如果有一个自然数a能被自然数b整除,则称a为b...