c语言如何求最小公倍数
8个回答
展开全部
#include<stdio.h>
#include<math.h>
int main(void)
{
int a,b,c,d,x,y,repeat,ri,m,n;
printf("输入运算次数:\n");
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
printf("输入两个不为0的数a和b:\n");
scanf("%d%d",&a,&b);
if(a==0||b==0)
printf("a或b为0,无法运算!\n");
else
{
if(a<b){
x=a;
a=b;
b=x;
}
m=a;
n=b;
y=a%b;
while(y!=0){
a=b;
b=y;
y=a%b;
}
c=b;
d=m*n/c;
printf("最大公约数是:%d\n最小公倍数是:%d\n",c,d);
}
}
}
#include<math.h>
int main(void)
{
int a,b,c,d,x,y,repeat,ri,m,n;
printf("输入运算次数:\n");
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
printf("输入两个不为0的数a和b:\n");
scanf("%d%d",&a,&b);
if(a==0||b==0)
printf("a或b为0,无法运算!\n");
else
{
if(a<b){
x=a;
a=b;
b=x;
}
m=a;
n=b;
y=a%b;
while(y!=0){
a=b;
b=y;
y=a%b;
}
c=b;
d=m*n/c;
printf("最大公约数是:%d\n最小公倍数是:%d\n",c,d);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
方法1:最小公倍数=两个数相乘 / 最大公约数
最大公约数用辗转相除法
#include<stdio.h>
int gcd(int a,int b) //递归法求最大公约数~
{
if(b==0)
return a;
return gcd(b,a%b);
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a*b/gcd(a,b));
}
方法2:直接遍历求得~
#include<stdio.h>
int main()
{
int a,b;
int i;
scanf("%d%d",&a,&b);
for(i=a;;i++)
if(i%a==0 && i%b==0)
break;
printf("%d\n",i);
}
最大公约数用辗转相除法
#include<stdio.h>
int gcd(int a,int b) //递归法求最大公约数~
{
if(b==0)
return a;
return gcd(b,a%b);
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a*b/gcd(a,b));
}
方法2:直接遍历求得~
#include<stdio.h>
int main()
{
int a,b;
int i;
scanf("%d%d",&a,&b);
for(i=a;;i++)
if(i%a==0 && i%b==0)
break;
printf("%d\n",i);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主要是辗转相除法。
方法一、不设函数
#include <stdio.h>
int main ()
{int p,r,n,m,temp;
printf("please enter two positive integer numbers n,m:");
scanf("%d %d",&n,&m);
if (n<m)
{temp=n;
n=m;
m=temp; //把大数放在n中, 小数放在m中
}
p=n*m; //先将n和m的乘积保存在p中, 以便求最小公倍数时用
while (m!=0) //求n和m的最大公约数
{r=n%m;
n=m;
m=r;
}
printf("HCF=%d\n",n);
printf("LCD=%d\n",p/n); // p是原来两个整数的乘积
return 0;
}
方法二、调用函数
#include <stdio.h>
int main ()
{int p,r,n,m,temp;
printf("please enter two positive integer numbers n,m:");
scanf("%d %d",&n,&m);
if (n<m)
{temp=n;
n=m;
m=temp; //把大数放在n中, 小数放在m中
}
p=n*m; //先将n和m的乘积保存在p中, 以便求最小公倍数时用
while (m!=0) //求n和m的最大公约数
{r=n%m;
n=m;
m=r;
}
printf("HCF=%d\n",n);
printf("LCD=%d\n",p/n); // p是原来两个整数的乘积
return 0;
}
方法一、不设函数
#include <stdio.h>
int main ()
{int p,r,n,m,temp;
printf("please enter two positive integer numbers n,m:");
scanf("%d %d",&n,&m);
if (n<m)
{temp=n;
n=m;
m=temp; //把大数放在n中, 小数放在m中
}
p=n*m; //先将n和m的乘积保存在p中, 以便求最小公倍数时用
while (m!=0) //求n和m的最大公约数
{r=n%m;
n=m;
m=r;
}
printf("HCF=%d\n",n);
printf("LCD=%d\n",p/n); // p是原来两个整数的乘积
return 0;
}
方法二、调用函数
#include <stdio.h>
int main ()
{int p,r,n,m,temp;
printf("please enter two positive integer numbers n,m:");
scanf("%d %d",&n,&m);
if (n<m)
{temp=n;
n=m;
m=temp; //把大数放在n中, 小数放在m中
}
p=n*m; //先将n和m的乘积保存在p中, 以便求最小公倍数时用
while (m!=0) //求n和m的最大公约数
{r=n%m;
n=m;
m=r;
}
printf("HCF=%d\n",n);
printf("LCD=%d\n",p/n); // p是原来两个整数的乘积
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询