当前位置:首页 » 编程语言 » c语言求最大公约数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言求最大公约数

发布时间: 2022-02-27 03:23:49

‘壹’ c语言程序设计如何求最大公约数

求最大公约数算法:

(1)辗转相除法

两整数a和b:

① a%b得余数c

② 若c=0,则b即为两数的最大公约数,结束

③ 若c≠0,则a=b,b=c,再回去执行①

(2)相减法

两整数a和b:

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

② 若a<b,则b=b-a

③ 若a=b,则a(或b)即为两数的最大公约数,结束

④ 若a≠b,则再回去执行①

(3)穷举法:

① i= a b中的小数

② 若a,b能同时被i整除,则i即为最大公约数,结束

③ i--,再回去执行②

相关代码:

#include<stdio.h>
intxc_gcd(inta,intb)
{
intc;
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
returnb;
}
intxj_gcd(inta,intb)
{
while(a!=b)
{
if(a>b)
a-=b;
else
b-=a;
}
returnb;
}
intqj_gcd(inta,intb)
{
inti;
i=(a>b)?a:b;
while(a%i!=0&&b%i!=0)
i--;
returni;
}
voidmain()
{
//inta=36,b=27;
//inta=27,b=36;
inta=100,b=201;
printf("a=%db=%d ",a,b);
printf("辗转相除法求最大公约数=%d ",xc_gcd(a,b));
printf("相减法求最大公约数=%d ",xc_gcd(a,b));
printf("穷举法求最大公约数=%d ",xc_gcd(a,b));
}

运行效果图:

‘贰’ C语言程序设计如何求最大公约数

具体操作步骤如下:

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

‘叁’ c语言如何求最大公约数和最小公倍数

#include <stdio.h>

int main()

{

int a,b,c,m,t;

printf("请输入两个数: ");

scanf("%d%d",&a,&b);

if(a<b)

{

t=a;

a=b;

b=t;

}

m=a*b;

c=a%b;

while(c!=0)

{

a=b;

b=c;

c=a%b;

}

printf("最大公约数是: %d ",b);

printf("最小公倍数是: %d ",m/b);

}

(3)c语言求最大公约数扩展阅读

算法思想

利用格式输入语句将输入的两个数分别赋给 a 和 b,然后判断 a 和 b 的关系,如果 a 小于 b,则利用中间变量 t 将其互换。

再利用辗转相除法求出最大公约数,进而求出最小公倍数。最后用格式输出语句将其输出。

#include<stdio.h>是在程序编译之前要处理的内容,称为编译预处理命令。编译预处理命令还有很多,它们都以“#”开头,并且不用分号结尾,所以是c语言的程序语句。

‘肆’ C语言求最大公约数

什么错误?我运行得没有问题啊?你把下面整个函数拷过去编译.

----------------------------------
int fac(int x,int y)
{
int n,t,z;
if(x<y)
{
t=x;
x=y;
y=t;
}
n=x%y; //先比大小再求mod
while(n!=0)
{
x=y;
y=n;
n=x%y; //这里不能少
}
z=y;
return(z);
}

‘伍’ C语言中求最大公约数的函数

#include
"stdio.h"
int
main()
{
int
d1,d2,r;
printf("输入两个正整数:");
scanf("%d
%d",&d1,&d2);
do
{
r=d1%d2;
d1=d2;d2=r;
}while(d2!=0);
printf("最大公约数是:%d",d1);
}
//递归法
#include
"stdio.h"
int
fun(int
d1,int
d2)
{
if(d2!=0)
return
fun(d2,d1%d2);
else
return
d1;
}
int
main()
{
int
d1,d2;
printf("输入两个正整数:");
scanf("%d
%d",&d1,&d2);
printf("最大公约数是:%d",fun(d1,d2));
}

‘陆’ c语言求两个数的最大公约数

程序是正确的,只是算法上过于繁琐,i从1到a,所有的数都要循环一次。

‘柒’ C语言求最大公约数的代码

int gcd(int a,int b){
int remainder;
remainder=a%b;
while(remainder){
a=b;
b=remainder;
remainder=a%b;
}
return b;
}有问题可以继续问,本人QQ314156403

‘捌’ c语言中求最大公约数和最小公倍数的程序

#include <stdio.h>

int gcd(int m,int n)

{ return n?gcd(n,m%n):m;

}

int main()

{ int a,b;

scanf("%d%d",&a,&b);

printf("Gcd(%d,%d)=%d ",a,b,gcd(a,b));

printf("Lcm(%d,%d)=%d ",a,b,a*b/gcd(a,b));

return 0;

}

‘玖’ 怎么用c语言编程求最大公约数

基本原理如下:
用欧几里德算法(辗转相除法)求两个数的最大公约数的步骤如下:
先用小的一个数除大的一个数,得第一个余数;
再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;
这样逐次用后一个数去除前一个余数,直到余数是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。