成语| 古诗大全| 扒知识| 扒知识繁体

当前位置:首页 > 知识百科

C语言求最大公约数和最小公倍数

Q1:用c语言编程输入两个整数,求其最大公约数和最小公倍数

123456789101112131415#include"stdio.h"main(){intm,n,t,h,a,b,q;printf("输入m,n的值:");scanf("%d%d",&m,&n);a=m;b=n;if(n>m){t=m;m=n;n=t;}while(m%n!=0){h=n;n=m%n;m=n;}a=a/n;b=b/n;q=a*b*n;printf("两数最大公约数为%d,最小公倍数为%d\n",n,q);}

Q2:C语言求最大公约数与最小公倍数

#include
int min(int *p,int n)
{
int min,i=0;
for(min=*p;i{
if(*p<=min)
min=*p;
}
return(min);
}
int max(int *p,int n)
{
int max,i=0;
for(max=*p;i{
if(*p>=max)
max=*p;
}
return(max);
}
int fun1(int *p,int n,int min) //最大公约数//
{
int t=n,flag=0;
for(;min>1;min--)
{
for(t=n-1,flag=0;t>=0;t--)
if(*(p+t)%min==0)
flag++;
if(3==flag){printf("最大公约数是%d\n",min);return(min);}
}printf("无最大公约数\n");
return 1;
}void fun2(int *p,int n,int t) //最小公倍数//
{
int z=1;
for(n=n-1;n>=0;n--)
z=z*(*(p+n-1));
z=z/t;
printf("最小公倍数是:%d\n",z);
}
main()
{
int a[3],n,min1,max1,t;
for(n=0;n<3;n++)
scanf("%d",&a[n]);
max1=max(a,n);
min1=min(a,n);
t=fun1(a,n,min1);
fun2(a,n,t);
}可以不用求最大的那个数,最小公约数就等于他们的乘积除以最大公约数

wWw.&BazHiSHi.coM

Q3:怎样用C语言求最大公约数和最小公倍数?算法怎样写?

最大公倍数:
int bei(int x,int y)
{
int i=1,j=1,k=1;
while(i)
{
if(x*j==y*k)return(x*j);
else if(x*jelse k++;
}
}
最大公约数
int yue(int x,int y)
{
int i,j,k,m;
i=1;
k=min(x,y)
while(i{
for(j=2;jif(x%j==0&&y%j==0)m=m*j;
if(j=k/m)i=k/2;
}
return (m);
}

Q4:c语言最大公约数和最小公倍数怎么表示

辗转相除法求最大公约数和最小公倍数
有两整数a和b:
① a%b得余数c
② 若c=0,则b即为两数的最大公约数
③ 若c≠0,则a=b,b=c,再回去执行①
例如求27和15的最大公约数过程为:
27÷15 余1215÷12余312÷3余0因此,3即为最大公约数
#include
void main()/*辗转相除法求最大公约数 */
{
int m, n, a, b, t, c;
printf("Input two integer numbers:\n");
scanf("%d%d", &a, &b);
m=a;n=b;
while(b!=0)/* 余数不为0,继续相除,直到余数为0 */
{ c=a%b; a=b;b=c;}
printf("The largest common divisor:%d\n", a);
printf("The least common multiple:%d\n", m*n/a);
}

猜你喜欢

更多