试着写了一个求最小公倍数的代码,但是跑不起来。没有报错
按照题主的思路用普通方法求最大公约数和最小公倍数
#include <stdio.h>
int main(void)
{
int a,b,n;
int tem=0,tep=0;
scanf("%d%d",&a,&b);
for(n=1;n<=a;n++) //求最大公约数,循环终止条件为n<=a或者n<=b都可以 不用管a,b谁大谁小
{
if(a%n==0 && b%n==0)
tem=n;
}
for(n=a*b;n>=a;n--) //求最小公倍数
{
if(n%a==0 && n%b==0)
tep=n;
}
printf("最大公约数:%d\n",tem);
printf("最小公倍数:%d",tep);
return 0;
}
请采纳谢谢
#include<iostream>
using namespace std;
int max(int n,int m);//最大公约数函数
int max(int n,int m)
{
int s,t;
if(m>n)
{
t=m;
m=n;
n=t;
}
while(m!=0)
{
s=n%m;
n=m;
m=s;
}
return n; //n为最大公约数
}
int main()
{
int n,m;
cin >> n;
cin >> m;
cout << max(n,m) << ' ' << n*m/max(n,m) << endl;
//n*m/max(n,m)是指两个数相乘在除以最大公约数的值为最小公倍数
}
for循环内部应该是n--不是n++
有帮助望采纳
给出的代码逻辑有问题
欧几里得算法求最大公约数和最小公倍数,这种比较快
#include <stdio.h>
int gcd(int a,int b)
{
if(b==0)
return a;
else
return gcd(b,a%b);
}
int main(void)
{
int x=0,y=0;
printf("输入两个正整数:");
scanf("%d%d",&x,&y);
printf("最大公约数为:%d\n",gcd(x,y));
printf("最小公倍数为:%d",x*y/gcd(x,y));
return 0;
}
使用辗转相除法求最小公倍数,如果有用望采纳
#include <stdio.h>
int main()
{
int a,b,A,B;
int lol,lpl;
printf ("输入两个整数:\n");
scanf ("%d%d",&a,&b);
A=a;
B=b;
if(B)
while((A %= B) && (B %= A));
lol = A+B;
lpl = a*b/lol;
printf ("最小公倍数为:%d\n", lpl);
return 0;
}