当前位置:首页 » 编程语言 » C语言求两个数的公约数

C语言求两个数的公约数

发布时间: 2022-06-10 21:36:16

㈠ 怎么用c语言编辑出两个数的最大公约数呀谢谢!!

#include
"stdio.h"
main()
{
int
x=0,y=0;
/*被求公倍数的两个数*/
int
z
=
0;
/*保存临时的取余结果*/
int
count
=
3;
/*循环计数*/
int
tmp
=
0;
/*交换x,y的临时变量
*/
/*循环3次获得用户输入,直到输入正确,或超过次数*/
while(count
>
0)
{
printf("please
input
two
numbers\n");
if(2
!=
scanf("%d%d",&x,&y))
/*如果正确的输入参数不等于2
就结束这次循环,并给出错误信息*/
{
fflush(stdin);
/*清空输入缓冲区,否则下次输入会有错误*/
count--;
printf("error:This
figure
must
be
imported
!
you
still
have
%d
opportunities.\n",count);
}
else
if(
x
==
0
||
y
==
0)
{
count--;
printf("error:The
input
not
equal
to
0!
you
still
have
%d
opportunities.\n",count);
}else
break;
}
/*如果输入次数超过限制,则退出程序并给出提示*/
if(count
<=
0)
{
printf("You
have
no
chance
of
withdrawal
proceres
");
return;
}
/*将两个数的大小位置固定,x永远大于y
方便下面判断*/
if(x
<
y)
{
tmp
=
x;
x
=
y;
y
=
tmp;
}
/*用辗转相除法求出最大公倍数*/
while(
x
%
y
!=
0)
{
printf("%d\t/\t%d\tremainder\t%d\n",x,y,(x
%
y));
/*输出求解过程*/
z
=
x
%
y;
x
=
y;
y
=
z;
}
printf("%d\t/\t%d\tremainder\t%d\n",x,y,(x
%
y));
/*输出最后一次求解过程*/
printf("the
result
is
%d\n",y);
}

㈡ C语言求2个数的公约数

#include<stdio.h>
void yue(int a,int b)
{
int i,x;
for(i=1;i<=a&&i<=b;i++)
if(a%i==0&&b%i==0)
x=i; //这里是把i作为公约数,不停的算下去,吧最大的公约数赋值给x
if(x==1)//x==1
printf("a and b have no yue\n"); //;1好像不是公约数吧
else
printf("The yue is %d\n",x);
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
yue(a,b);
return 0;
}

㈢ c语言求两个数的所有公约数和最大公约数

#include "stdio.h"
void main()
{
unsigned int a,b;
unsigned int i;
unsigned int max=1;

printf("请输入2个整数:");
scanf("%d%d",&a,&b);

printf("%d%和%d的公约数有:",a,b);
for(i=2;i<((a>b)?a:b);i++)
{
if((a%i==0)&&(b%i==0))
{
max = i;
printf("%d ",i);
}
}
printf("\n最大公约数为:%d\n",max);
}

㈣ C语言程序:求两个数的最大公约数和最小公倍数。

#include<iostream>
using
namespace
std;
int
f(int
p,int
q);
int
g(int
u,int
v,int
w);
int
main()
{
int
x,y,m,n;
cout<<"请输入两个整数"<<endl;

cin>>x>>y;

m=f(x,y);
n=g(x,y,m);
cout<<"这两个数的最大公约数是"<<m<<"\n这两个数的最小公倍数是"<<n<<endl;
}
int
f(int
p,int
q)
{

int
r;

p>q?r=q:r=p;
//找两个数中最小的最小的

for(;p%r!=0||q%r!=0;r--);

return
r;
}
int
g(int
u,int
v,int
w)
//w是最大公约数
{

int
g;

g=u*v/w;
return
g;
}

㈤ 用C语言求两个数的最大公约数和最小公倍数

你可以编写一个程序,实现辗转相除法(欧几里得算法),来求得最大公约数,然后用两个数相乘再除以最大公约数来,得到最小公倍数。

#include
<stdio.h>

int
main()
{

int
a,
b,
c;
//a,
b就是M和N,c是余数

int
ta,
tb;
//用来记录a,b的临时值

int
maxgys,mingbs;

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

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

ta
=
a;
tb
=
b;

if(ta
>
tb)
{ta
=
b;
tb
=
a;}

c
=
tb
%
ta;

while(c!=
0)
{

tb
=
ta;
//辗转相除的过程

ta
=
c;

c
=
tb
%
ta;

}

printf("%d和%d的最大公约数是:
%d\n",
a,
b,
ta);

printf("%d和%d的最小公倍数是:
%d\n",
a,
b,
a
*
b
/
ta);

return
0;
}

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

求两个数的最大公约数就是用短除法求出这两个数的公因数,最大公因数就是这两个数的最大公约数。

㈦ C语言编程中,求两个数的最大公约数和最小公倍数算法是怎样的

#include
main()
{
int
m,n,r;
printf("请输入两个数字:");
scanf("%d%d",&m,&n);
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
printf("两个数字的最大公约数为%d\n",n);
getch();
}
这个算法就是把你初中算最大公约数的过程给程序化了。。你用以前的方法在纸上算算最大公约数
再对照WHILE里面的算法
就能明白咋回事了。。

㈧ c语言求两个数最大公约数

#include <stdio.h>

int main()
{
int a = 0;
int b = 0;
printf("输入两个数求最大公约数:");
scanf("%d%d",&a,&b);
while(a!=b)
{
if(a>b)
a = a - b;
if(a<b)
b = b - a;
}
printf("%d\n",a);
return 0;
}

㈨ 如何用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 yueshu(int m,int n)
{
int t;
if(m>n)
t=m,m=n,n=t; //替换,保证m为较大的数
while(n!=0)
{
t=m%n;
m=n;
n=t;
}
return m;
}
int beishu(int m,int n)
{
return m*n/yueshu(m,n); //最小公倍数即为两个数的乘积除以最大公约数
}
main()
{
int m,n,s,t;
while(scanf("%d%d",&m,&n))
{
s=yueshu(m,n);
printf("%d\n",s);
t=beishu(m,n);
printf("%d\n",t);
}
}

热点内容
安卓输入法哪个词库好 发布:2025-02-08 00:03:47 浏览:90
c存储过程数据集 发布:2025-02-08 00:03:42 浏览:923
qq卡的密码在哪里找 发布:2025-02-07 23:59:32 浏览:964
安卓为什么注册不了lysn 发布:2025-02-07 23:55:36 浏览:93
十个字母无压缩 发布:2025-02-07 23:54:51 浏览:380
java恶作剧小程序 发布:2025-02-07 23:53:48 浏览:671
openvas源码 发布:2025-02-07 23:48:14 浏览:318
面java 发布:2025-02-07 23:36:21 浏览:617
编译原理练习题第三章答案 发布:2025-02-07 23:35:05 浏览:752
炉石写脚本 发布:2025-02-07 23:31:24 浏览:985