求一个用c语言编写的,编写函数计算两个整数的所有公约数的编程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一个用c语言编写的,编写函数计算两个整数的所有公约数的编程相关的知识,希望对你有一定的参考价值。

好的,下面是一个用C语言编写的计算两个整数的所有公约数的函数:

#include <stdio.h>
#include <stdlib.h>

int gcd(int a, int b)
int temp;
while (b != 0)
temp = a % b;
a = b;
b = temp;

return a;


void common_divisors(int a, int b)
int i, max;
max = gcd(a, b);
printf("The common divisors of %d and %d are:\n", a, b);
for (i = 1; i <= max; i++)
if (a % i == 0 && b % i == 0)
printf("%d\n", i);




int main()
int x, y;
printf("Enter two numbers: ");
scanf("%d %d", &x, &y);
common_divisors(x, y);
return 0;

在这段代码中,我们定义了两个函数:gcd和common_divisors。 gcd函数用于计算两个整数的最大公约数,而common_divisors函数则用于打印出两个数的所有公约数。我们也定义了主函数main,它会提示用户输入两个数字,并调用common_divisors函数来计算和打印公约数。

要理解gcd函数的工作原理,我们可以使用欧几里得算法。这个算法基于结论:如果a和b是两个整数,r是它们的模(余数),那么a和b的最大公约数等于b和r的最大公约数。我们可以用循环来实现这个算法,每次用b的值去模a的值来更新b和a的值,如下所示:

while (b != 0)
temp = a % b;
a = b;
b = temp;

对于common_divisors函数,我们计算了两个输入数的最大公约数. max,然后使用for循环找到所有能够同时整除这两个数的公因子,例如:

for (i = 1; i <= max; i++)
if (a % i == 0 && b % i == 0)
printf("%d\n", i);


希望这段代码可以帮助你解决问题。
参考技术A #include<stdio.h>
main()

int i,j,m;
printf("please press two num:");
scanf("%d%d",&i,&j);
m=i;
if(j<m)

m=j;

printf("gong yue shu is:");
for(m=j; m>0; m--)

if(i%m==0&&j%m==0)

printf("%d\b",m);


while(getchar()!='\n');
追问

有错啊

追答

呵呵 这样对不对,手上没编译器。
#include
main()

int i,j,m;
printf("please press two num:");
scanf("%d%d",&i,&j);
m=i;
if(j0; m--)

if((i%m==0)&&(j%m==0))

printf("%d\b",m);


while(getchar()!='\n');

追问

没事的,我在看

本回答被提问者采纳
参考技术B int gcd(int m, int n)

int t;

while(m > 0)

if(n > m)

t = m;
m = n;
n = t;

m -= n;


return n;

C语言试题七十四之请编写函数求两个数的最小公倍数

1、 题目

编写函数:求两个数的最小公倍数。

最小公倍数(Least Common Multiple,LCM),如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数,对于两个整数来说,指该两数共有倍数中最小的一个。

2、思路:

① 比较a和b,先确定其中的较大的数。

② 然后分别利用a和b同时整除较大的数,然后较大的数一次递增,直到同时满足a和b同时整除为止。
 

或者我们用公式:最小公倍数=两数的乘积/最大公约(因)数

3 、温馨提示

      C语言试题汇总里可用于计算机二级C语言笔试、机试、研究生复试中C程序设计科目、帮助C语言学者打好程序基础、C语言基础,锻炼您的逻辑思维和解决问题的能力,帮助你成为C语言笔试、机试解题高手,帮助你拿到C语言工作的offer,每一个题目都附带源代码和运行结果,让你不再有任何困惑,妈妈再也不担心我的C语言了。如果程序有任何看不懂或者哪个步骤不理解的地方都可以加我微信(15874274916)私聊我,或者有更好的思路解决办法都可以加我微私聊,一起探讨、希望可以正真的帮助到你,同时也可以扫下面的二维码关注我微信公众号

以上是关于求一个用c语言编写的,编写函数计算两个整数的所有公约数的编程的主要内容,如果未能解决你的问题,请参考以下文章

用C语言编写(计算两个整数的和、 差、积、商与余数

C语言函数编写,求两个整数的最大公约数和最小公倍数

编写一个c语言程序,输入三个整数,输出它们的最大值?

如何用C语言编写一个求两数相加得和的小程序。

C语言 N为正整数,计算从1到N的所有整数中包含数字1的个数

c语言编写程序 输入两个整数,计算两数之和