当前位置:首页 » 编程语言 » c语言求最大公约数

c语言求最大公约数

发布时间: 2022-01-23 09:30:17

c语言求最大公约数

这个叫做辗转相除法,是中国古代标准的求最大公约数的方法。两个数正整数a〉b,如果a%b(a除b的余数)=0,b就是最大公约数;否则比较b与a÷b的余数c=a%b,两者相除,余数为0,c是最大公约数;否则继续比较c与b%c(余数),……,反复交换进行,直到余数为0

㈡ C语言求最大公约数的代码

你的代码,主要的错误在for循环里的判断条件,应该是a%i!=0&&b%i!=0
不等号;但是,是了很久,发现这样的算法或者说思路也是错误的!因为你这样找到的只是两个数的最小公约数,而非最大公约数的,你可以用原来的想法,i

两个数中较小者那个从大到小去循环,从而找到两个数的公约数,也就是(从大到小)倒这来找公约数;或者建议你考虑辗转相除法,辗转相除法的思路是这样的:若
m和n为这连个正整数,有:当m>n,m与n
的最大公约数等于
n

m%n的最大公约数当n=0
,m与
n
的最大公约数等于
m,以下是算法,使用for语句:#include<stdio.h>
#include<windows.h>
int
main(){
int
a,b,m,n,r;
printf("输入两个正整数(请用逗号隔开):");
scanf("%d%d",&a,&b);
if(a>b)
{
m=a;
n=b;
}
else
{
m=b;
n=a;
}
for(r=b;r!=0;){
r=m%n;
m=n;
n=r;
}
printf("%d

%d
的最大公约数是:%d\n",a,b,m);
system("PAUSE");
return
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语言计算两个数的最大公约数

#include <stdio.h>
int a,b,temp;
int Division(){
printf("请输入两个数(a,b):\n");
scanf("%d,%d",&a,&b);
if(a<b){
temp=a;
a=b;
b=temp;
}
while(a%b!=0){
temp=a%b;
a=b;
b=temp;
}
printf("最大公约数为:%d\n",b);
return 0;
}

㈤ C语言程序设计如何求最大公约数

具体操作步骤如下:

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

㈥ 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语言求两个数的最大公约数的三种算法

1、相减法

#include&lt;stdio.h&gt;

int main()

{

int a,b;

int c=0;//计数器

while(1)//循环判断的作用

{

printf("输入两个数字求最大公约数:");

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

while(a!=b)

{

if(a&gt;b)

a=a-b;

else

b=b-a;

c++;

}

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

printf("%d ",c);

}

return 0;

}

运行效果:

2、辗转相除法:

#include&lt;stdio.h&gt;

int a,b,temp;

int Division(){

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

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

if(a&lt;b){

temp=a;

a=b;

b=temp;

}

while(a%b!=0){

temp=a%b;

a=b;

b=temp;

}

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

return 0;

}

3、穷举法

#include&lt;stdio.h&gt;

int main()

{

int a,b,c;

int d=0;//计数器

while(1)

{

printf("输入两个数字求最大公约数:");

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

c=(a&gt;b)?b:a;//三目运算符

while(a%c!=0||b%c!=0)

{

c--;

d++;

}

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

printf("%d ",d);

}

return 0;

}

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

#include<stdio.h>
int main()
{
int m,n;
int divisor,dividend,res;/*除数 被除数 余数*/
scanf("%d%d",&m,&n);
if(m>0&&n>0)
{

if(m>=n)
{
divisor=n;
dividend=m;
}
else
{
divisor=m;
dividend=n;
}
res=dividend%divisor;
while(res!=0)//循环体是三条语句,不加大括号循环只执行一条语句
{
dividend=divisor;
divisor=res;
res=dividend%divisor;
}
printf("%d",divisor);
}
else
printf("error!\n");
return 0;
}
两数相乘除以最大公约数就是最小公倍数

㈨ c语言求最大公约数

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

㈩ c语言求两个数的最大公约数

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

热点内容
递归sql语句 发布:2025-01-08 11:31:50 浏览:706
laravel缓存文件 发布:2025-01-08 11:31:46 浏览:631
怎么看macbook配置信息 发布:2025-01-08 11:27:40 浏览:59
python带路径的文件 发布:2025-01-08 11:23:22 浏览:713
如何把手机内容存储 发布:2025-01-08 11:09:34 浏览:245
三星联系人存储程序停止 发布:2025-01-08 11:09:26 浏览:424
qq编程语言 发布:2025-01-08 11:04:26 浏览:39
安卓系统玩的王者荣耀怎么转苹果 发布:2025-01-08 11:02:21 浏览:850
走马灯编程 发布:2025-01-08 10:57:23 浏览:921
广州移动的服务密码是多少位数 发布:2025-01-08 10:57:20 浏览:775