求几个数的最大公约数及最小公倍数
源代码在线查看: gcd.cpp
软件大小: |
3 K |
上传用户: |
ZOUTING |
|
|
关键词: |
|
下载地址: |
免注册下载 普通下载
|
|
#include
#include
typedef long int NUM;
static NUM out1=1;
static NUM out2=1;
NUM lcm(NUM k); //求最小公倍数;
NUM gcd(NUM k); //求最大公约数;
void main()
{
NUM input=1,n=0;
cout cout while(input!=0) //验证输入数据是否有效
{
while (!(cin>>input))
{
cout cin.clear();
char buffer[1024];
cin.getline(buffer,1024);
}
n++;
out1=lcm(input); //每接收到一个数字就调用函数开始计算
if(n==1)
out2=input; //为求最大公约数需用第一个值初始化out2;
out2=gcd(input);
}
cout cout }
NUM lcm(NUM k)
{
NUM i;
for(i=out1;i if(i%out1==0&&i%k==0) //找到第一个既能被out1整除又能被k整除的最小整数;
{
out1=i;
break;
}
return out1;
}
NUM gcd(NUM k)
{
NUM i;
for(i=out2;i>=1;i--) //找到第一个既能整除out2又能整除k的最大整数;
if(out2%i==0&&k%i==0)
{
out2=i;
return out2;
}
return out2;
}