c语言求最大公约数

c语言求最大公约数,第1张

代码如下:

#include

int main()

{

int i,a,b,t;

scanf(%d%d,&a,&b);//输入数a,b

if(a>b)//比较a,b大小,如果a>b则交换,结果为a= 2; i--)//以较小的a为基数,每内次i减小1循环求最大公容约数

{

if (a % i == 0 && b % i == 0)//如果两数均能整除某数则该数为最大公约数

{

printf(最大公约数是:%dn,i);

break;//已得到最大公约数后跳出循环

}

}

if(i==1)//若循环到最后仍无最大公约数则i=1

printf(两数只能同时被1整除!n);

return 0;

}

首先要知道什么事最大公约数

最大公约数就是能被两者同时整除的最大数

比如5 25 那么5就是最大公约数

while(m!=0) 是判断m是不等于0的数,因为0不能做为分母的

r=n%m; r就是n%m的余数

n=m 是把m的值赋给n

m=r 是把r的值赋给m

首先,可以给n和m一个值,例如n=30,m=4

那么r=30%4=2,n=4,m=2

由此可以得到,最大公约数是 2

最大公约数即从两个数中较小的那个数开始依次向下找,第一次能同时被那两个数整除的即为最大公约数,如6和9,3就是它俩的最大公约数。

#include <stdioh>

main()

{

int m,n;

int i;

printf("input two numbers:\n");

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

if(m>n)

{

i=m;

m=n;

n=i;

}

for(i=m;i>0;i--)

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

break;

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

}

#include<stdioh>

#include <conioh>

void main()

{

int m,n,k;

while (1)

{

printf("输入m和n(m>n):");

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

if(m<n)

printf("输入错误,请重新输入\n");

else break;

}

while (1)

{

k=m%n;

if(k==0)

break;

m=n;

n=k;

}

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

getch();

}

最大公约数c语言编程的常用思路是:按照从大(两个整数中较小的数)到小(到最小的整数1)的顺序求出第一个能同时整除两个整数的自然数,即为所求。

两个数的最大公约数有可能是其中的小数,所以在按从大到小顺序找寻最大公约数时,循环变量i的初值从小数n开始依次递减,去寻找第一个能同时整除两整数自然数,并将其输出。

需要注意的是,虽然判定条件是i>0,但在找到第一个满足条件的i值后,循环没必要继续下去,如,25和15,最大公约数是5,对于后面的4、3、2、1没必要再去执行,但此时判定条件仍然成立,要结束循环只能借助break语句。

具体代码实现:

#include<stdioh>

int main()

{

int m,n,temp,i;

printf("Input m&n:");

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

if(m<n)/比较大小,使得m中存储大数,n中存储小数/

{/交换m和n的值/

temp=m;

m=n;

n=temp;

}

for(i=n;i>0;i--)/按照从大到小的顺序寻找满足条件的自然数/

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

{/输出满足条件的自然数并结束循环/

printf("The GCD of%d and%d is:%d\n",m,n,i);

break;

}

return 0;

}

#include "stdioh"

int gcd(int x,int y)

//欧几里得辗转相除法求两数的最大的公约数

{int m;

if(x<y)

return gcd(y,x);

if(x%y!=0)

return gcd(y,x%y);

else return y;

}

int main()

{int x,y,z;

scanf("%d %d %d",&x,&y,&z);

printf("%d %d %d\n",x,y,gcd(x,y));

printf("%d %d %d\n",y,z,gcd(y,z));

printf("%d %d %d\n",z,x,gcd(x,z));

printf("%d %d %d %d\n",x,y,z,gcd(x,gcd(y,z)));

return 0;

}

以上就是关于c语言求最大公约数全部的内容,包括:c语言求最大公约数、c程序 最大公约数、设计C程序,计算两个数的最大公约数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9385216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存