⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gcd.cpp

📁 求几个数的最大公约数及最小公倍数
💻 CPP
字号:
#include <iostream.h>
#include <math.h>
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<<"OK!"<<endl;
	cout<<"请输入数据(请以0结束输入):"<<endl;
	while(input!=0)                   //验证输入数据是否有效
	{
		while (!(cin>>input))
		{
			cout<<"Error!"<<endl;
			cin.clear();
			char buffer[1024];
			cin.getline(buffer,1024);
		}
		n++;
		out1=lcm(input);               //每接收到一个数字就调用函数开始计算
		if(n==1)
			out2=input;                //为求最大公约数需用第一个值初始化out2;
		out2=gcd(input);
	}
	cout<<"最小公倍数为:"<<out1<<endl;
	cout<<"最大公约数为:"<<out2<<endl;
}

NUM lcm(NUM k)
{
    NUM i;
	for(i=out1;i<=out1*k;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;		
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -