算法:给定两个正整数m和n,求它们的最大公因子,即能够同时整除m和n的最大正整数。
1. [求余数]以n除m并令r为所得余数(我们将有0<=r<n).
2. [余数为0?]若r=0,算法结束;n既为答案.
3.[互换]置m<-n,n<-r,并返回步骤1
代码(不成熟之处还望指教):
代码
// consoleApp.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int m,n;
int con;
cin>>m>>n;
int Euclid(int,int);
con=Euclid(m,n);
cout<<con<<endl;
}
int Euclid(int m,int n)
{
//int m1=m,n1=n;
if(m<=0||n<=0)
return 0;
if(m<n)
{
int temp=m;
m=n;
n=temp;
}
int r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
return n;
}
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int m,n;
int con;
cin>>m>>n;
int Euclid(int,int);
con=Euclid(m,n);
cout<<con<<endl;
}
int Euclid(int m,int n)
{
//int m1=m,n1=n;
if(m<=0||n<=0)
return 0;
if(m<n)
{
int temp=m;
m=n;
n=temp;
}
int r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
return n;
}
最大公因子求出来了,那么最小公倍数呢?
其实只要在运算函数里面返回两个数的积与最大公因子的比值即可,既:m1*n1/n