求最小公倍数和最大公约数的各种方法
下一篇: Java把int型数字转换为string型
No.1:
#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);
}
No.2:
# include <stdio.h>
#include<string.h>
const int MAX=2000;
int lcm(int m, int n){
int i,t;
if(m<n) {
t=m;
m=n;
n=t;
}
for(i=m;i>=1;i++)
//if(i/m*m==m&&i/n*n==n) 这样是不对的i/m是整除的,比如3/4=1
if(i%m==0 && i%n==0)//判断整除是这么判断的
break;
return i;
}
int main (void){
int m,n;
scanf("%d%d",&n,&m);
printf("%d\n",lcm(n,m));
return 0;
}
No.3:
//最小公倍数=两个数相乘 / 最大公约数
//最大公约数用辗转相除法
#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));
}
No.4:
#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;
}
No.5:
//主要是辗转相除法。
//方法一、不设函数
#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;
}
下一篇: Java把int型数字转换为string型