求最小公倍数和最大公约数的各种方法

Posted by 撒得一地 on 2016年4月19日 in 杂谈

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;

上一篇:

下一篇:

相关推荐

网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.