C语言 最大公约数和最小公倍数
发布网友
发布时间:2022-04-24 02:39
我来回答
共6个回答
热心网友
时间:2023-10-22 11:47
/*利用辗转相除法求最大公因数*/
#include "stdio.h"
int Gcd(int m,int n)/*最大公约数*/
{
int t;
if(m<n)
{
t = n,n = m,m = t;
}
if(n == 0) return m;
else return Gcd(n,m%n);
}
void main()
{
int A,B,gys,gbs;
scanf("%d %d",&A,&B);
gys=Gcd(A,B);
gbs=A*B/gys;
printf("最大公因数为:%d,最小公倍数为%d\n",gys,gbs);
}
热心网友
时间:2023-10-22 11:48
#include<stdio.h>
int *(int v1,int v2)
{
while(v2)
{
int temp=v2;
v2=v1%v2;
v1=temp;
}
return v1;
}
int main()
{
int a,b,gys,gbs;
scanf("%d %d",&a,&b);
gys=*(a,b);
gbs=a*b/gys;
printf("最大公因数为:%d,最小公倍数为%d\n",gys,gbs);
return 0;
}
热心网友
时间:2023-10-22 11:48
#include <stdio.h>
void main()
{
int x,y,num1,num2,temp;
printf("输入2个正整数:\n");
scanf("%d%d",&num1,&num2);
if(num1>num2)
{
temp=num1;
num1=num2;
num2=temp;
}
x=num1;
y=num2;
while(y!=0)
{
temp=x%y;
x=y;
y=temp;
}
printf("最大公约数%d\n",x);
printf("最小公倍数%d\n",num1*num2/x);
}
热心网友
时间:2023-10-22 11:49
下面给出一段求n个数的最大公约数和最小公倍数的程序
#include<stdio.h>
int maxgys(int a[],int n);
int mingbs(int a[],int n);
main()
{
int n,i=0;
long a[10],b[10],maxg,ming;
printf("请输入你所要求的数据的个数\n");
scanf("%d",&n);
do
{
printf("请输入第%d个数:",i+1);
scanf("%ld",&a[i]);
i++;
}while(i<n);
printf("你所输入的%d个数如下:\n",n);
for(i=0;i<n;i++)
{
b[i]=a[i]; //将a数组中的值复制一份给b数组
printf("%ld ",a[i]);
}
printf("\n");
maxg=maxgys(a,n);
ming=mingbs(b,n);
printf("最大公约数为:%ld\n",maxg);
printf("最小公倍数为:%ld\n",ming);
}
long maxgys(long a[],int n)
{
int i,j;
long t;
while(1)
{
for(i=0;i<n-1;i++) //对数组进行从大到小的排序
{
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
}
if(a[0]==a[n-1])
return a[0];
else
{
for(i=0;i<n-1;i++)
{
if(a[i]%a[i+1]==0)
a[i]=a[i+1];
else
a[i]=a[i]%a[i+1];
}
}
}
}
long mingbs(long a[],int n)
{
int i,j,k=0,p=0;
long t;
for(i=1;i<n;i++) //找出数组中的最大值
{
if(a[k]<a[i])
k=i;
}
t=a[0];a[0]=a[k];a[k]=t; //将最大值放在a[0]中
t=a[0]; //再将a[0]的值放入t中,下面增值的时候会用到
while(1)
{
if(p==0)
{
for(i=1;i<n;i++)
{
if(a[0]%a[i]!=0)
{
a[0]+=t;
p=0; //p用来判断a[0]是否可以整除数组后面的值,如果不能返回0,如能返回1
}
else
p=1;
}
}
if(p==1)
return a[0];
}
}
热心网友
时间:2023-10-22 11:49
#include<stdio.h>
main()
{ int m,n,t,k,a,b;
printf("请输入2个整数\n");
scanf("%d%d",&m,&n);
if(m<n){
t=m;
m=n;
n=t;
}
a=m;
b=n;
k=m*n;
while(b!=0)
{ t=a%b;
a=b;
b=t;
}
printf("最大公约数是%d\n",n);
printf("%d",k);
printf("最小公倍数%d\n",k/n);
getch();
}
热心网友
时间:2023-10-22 11:50
#include <stdio.h>
#include <stdlib.h>
int Div(int m,int n)
{
if(m < n)
{
int temp = m;
m = n;
n = temp;
}
while(n)
{
int temp = m % n;
m = n;
n = temp;
}
return m;
}
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int dive = Div(m,n);
int mul = m * n / dive;
printf("%d %d\n",dive,mul);
system("pause");
return 0;
}
热心网友
时间:2023-10-22 11:47
/*利用辗转相除法求最大公因数*/
#include "stdio.h"
int Gcd(int m,int n)/*最大公约数*/
{
int t;
if(m<n)
{
t = n,n = m,m = t;
}
if(n == 0) return m;
else return Gcd(n,m%n);
}
void main()
{
int A,B,gys,gbs;
scanf("%d %d",&A,&B);
gys=Gcd(A,B);
gbs=A*B/gys;
printf("最大公因数为:%d,最小公倍数为%d\n",gys,gbs);
}
热心网友
时间:2023-10-22 11:48
#include<stdio.h>
int *(int v1,int v2)
{
while(v2)
{
int temp=v2;
v2=v1%v2;
v1=temp;
}
return v1;
}
int main()
{
int a,b,gys,gbs;
scanf("%d %d",&a,&b);
gys=*(a,b);
gbs=a*b/gys;
printf("最大公因数为:%d,最小公倍数为%d\n",gys,gbs);
return 0;
}
热心网友
时间:2023-10-22 11:48
#include <stdio.h>
void main()
{
int x,y,num1,num2,temp;
printf("输入2个正整数:\n");
scanf("%d%d",&num1,&num2);
if(num1>num2)
{
temp=num1;
num1=num2;
num2=temp;
}
x=num1;
y=num2;
while(y!=0)
{
temp=x%y;
x=y;
y=temp;
}
printf("最大公约数%d\n",x);
printf("最小公倍数%d\n",num1*num2/x);
}
热心网友
时间:2023-10-22 11:49
下面给出一段求n个数的最大公约数和最小公倍数的程序
#include<stdio.h>
int maxgys(int a[],int n);
int mingbs(int a[],int n);
main()
{
int n,i=0;
long a[10],b[10],maxg,ming;
printf("请输入你所要求的数据的个数\n");
scanf("%d",&n);
do
{
printf("请输入第%d个数:",i+1);
scanf("%ld",&a[i]);
i++;
}while(i<n);
printf("你所输入的%d个数如下:\n",n);
for(i=0;i<n;i++)
{
b[i]=a[i]; //将a数组中的值复制一份给b数组
printf("%ld ",a[i]);
}
printf("\n");
maxg=maxgys(a,n);
ming=mingbs(b,n);
printf("最大公约数为:%ld\n",maxg);
printf("最小公倍数为:%ld\n",ming);
}
long maxgys(long a[],int n)
{
int i,j;
long t;
while(1)
{
for(i=0;i<n-1;i++) //对数组进行从大到小的排序
{
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
}
if(a[0]==a[n-1])
return a[0];
else
{
for(i=0;i<n-1;i++)
{
if(a[i]%a[i+1]==0)
a[i]=a[i+1];
else
a[i]=a[i]%a[i+1];
}
}
}
}
long mingbs(long a[],int n)
{
int i,j,k=0,p=0;
long t;
for(i=1;i<n;i++) //找出数组中的最大值
{
if(a[k]<a[i])
k=i;
}
t=a[0];a[0]=a[k];a[k]=t; //将最大值放在a[0]中
t=a[0]; //再将a[0]的值放入t中,下面增值的时候会用到
while(1)
{
if(p==0)
{
for(i=1;i<n;i++)
{
if(a[0]%a[i]!=0)
{
a[0]+=t;
p=0; //p用来判断a[0]是否可以整除数组后面的值,如果不能返回0,如能返回1
}
else
p=1;
}
}
if(p==1)
return a[0];
}
}
热心网友
时间:2023-10-22 11:49
#include<stdio.h>
main()
{ int m,n,t,k,a,b;
printf("请输入2个整数\n");
scanf("%d%d",&m,&n);
if(m<n){
t=m;
m=n;
n=t;
}
a=m;
b=n;
k=m*n;
while(b!=0)
{ t=a%b;
a=b;
b=t;
}
printf("最大公约数是%d\n",n);
printf("%d",k);
printf("最小公倍数%d\n",k/n);
getch();
}
热心网友
时间:2023-10-22 11:47
/*利用辗转相除法求最大公因数*/
#include "stdio.h"
int Gcd(int m,int n)/*最大公约数*/
{
int t;
if(m<n)
{
t = n,n = m,m = t;
}
if(n == 0) return m;
else return Gcd(n,m%n);
}
void main()
{
int A,B,gys,gbs;
scanf("%d %d",&A,&B);
gys=Gcd(A,B);
gbs=A*B/gys;
printf("最大公因数为:%d,最小公倍数为%d\n",gys,gbs);
}
热心网友
时间:2023-10-22 11:48
#include<stdio.h>
int *(int v1,int v2)
{
while(v2)
{
int temp=v2;
v2=v1%v2;
v1=temp;
}
return v1;
}
int main()
{
int a,b,gys,gbs;
scanf("%d %d",&a,&b);
gys=*(a,b);
gbs=a*b/gys;
printf("最大公因数为:%d,最小公倍数为%d\n",gys,gbs);
return 0;
}
热心网友
时间:2023-10-22 11:50
#include <stdio.h>
#include <stdlib.h>
int Div(int m,int n)
{
if(m < n)
{
int temp = m;
m = n;
n = temp;
}
while(n)
{
int temp = m % n;
m = n;
n = temp;
}
return m;
}
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int dive = Div(m,n);
int mul = m * n / dive;
printf("%d %d\n",dive,mul);
system("pause");
return 0;
}
热心网友
时间:2023-10-22 11:48
#include <stdio.h>
void main()
{
int x,y,num1,num2,temp;
printf("输入2个正整数:\n");
scanf("%d%d",&num1,&num2);
if(num1>num2)
{
temp=num1;
num1=num2;
num2=temp;
}
x=num1;
y=num2;
while(y!=0)
{
temp=x%y;
x=y;
y=temp;
}
printf("最大公约数%d\n",x);
printf("最小公倍数%d\n",num1*num2/x);
}
热心网友
时间:2023-10-22 11:49
下面给出一段求n个数的最大公约数和最小公倍数的程序
#include<stdio.h>
int maxgys(int a[],int n);
int mingbs(int a[],int n);
main()
{
int n,i=0;
long a[10],b[10],maxg,ming;
printf("请输入你所要求的数据的个数\n");
scanf("%d",&n);
do
{
printf("请输入第%d个数:",i+1);
scanf("%ld",&a[i]);
i++;
}while(i<n);
printf("你所输入的%d个数如下:\n",n);
for(i=0;i<n;i++)
{
b[i]=a[i]; //将a数组中的值复制一份给b数组
printf("%ld ",a[i]);
}
printf("\n");
maxg=maxgys(a,n);
ming=mingbs(b,n);
printf("最大公约数为:%ld\n",maxg);
printf("最小公倍数为:%ld\n",ming);
}
long maxgys(long a[],int n)
{
int i,j;
long t;
while(1)
{
for(i=0;i<n-1;i++) //对数组进行从大到小的排序
{
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
}
if(a[0]==a[n-1])
return a[0];
else
{
for(i=0;i<n-1;i++)
{
if(a[i]%a[i+1]==0)
a[i]=a[i+1];
else
a[i]=a[i]%a[i+1];
}
}
}
}
long mingbs(long a[],int n)
{
int i,j,k=0,p=0;
long t;
for(i=1;i<n;i++) //找出数组中的最大值
{
if(a[k]<a[i])
k=i;
}
t=a[0];a[0]=a[k];a[k]=t; //将最大值放在a[0]中
t=a[0]; //再将a[0]的值放入t中,下面增值的时候会用到
while(1)
{
if(p==0)
{
for(i=1;i<n;i++)
{
if(a[0]%a[i]!=0)
{
a[0]+=t;
p=0; //p用来判断a[0]是否可以整除数组后面的值,如果不能返回0,如能返回1
}
else
p=1;
}
}
if(p==1)
return a[0];
}
}
热心网友
时间:2023-10-22 11:49
#include<stdio.h>
main()
{ int m,n,t,k,a,b;
printf("请输入2个整数\n");
scanf("%d%d",&m,&n);
if(m<n){
t=m;
m=n;
n=t;
}
a=m;
b=n;
k=m*n;
while(b!=0)
{ t=a%b;
a=b;
b=t;
}
printf("最大公约数是%d\n",n);
printf("%d",k);
printf("最小公倍数%d\n",k/n);
getch();
}
热心网友
时间:2023-10-22 11:50
#include <stdio.h>
#include <stdlib.h>
int Div(int m,int n)
{
if(m < n)
{
int temp = m;
m = n;
n = temp;
}
while(n)
{
int temp = m % n;
m = n;
n = temp;
}
return m;
}
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int dive = Div(m,n);
int mul = m * n / dive;
printf("%d %d\n",dive,mul);
system("pause");
return 0;
}