您的位置:首页 > 编程语言 > C语言/C++

C++实验7-最大公约和和最小公倍数

2016-06-02 19:33 381 查看
一、问题及代码:

/*
* 文件名称:Ex7.cpp
* 作    者:罗前
* 完成日期:2016 年 6月 2日
* 版 本 号:v6.0
* 对任务及求解方法的描述部分:
* 输入描述:从键盘中输入两个整数
* 问题描述:
* 程序输出:求这两个整数的最大公约数和最小公倍数
* 问题分析:
* 算法设计:
*/
#include <iostream>
using namespace std;
int g;       //定义全局变量
void Fun_1(int m,int n)
{
int t;
if(m<n)
{
Fun_1(n,m);
}
else
{
while(n!=0)
{
t=m%n;
m=n;
n=t;
}
g=m;
}
}
int Fun_2(int m,int n)
{
int t;
t=(m*n)/g;
return t;
}
int main(int argc,char *argv[])
{
int m,n;
cout<<"请输入两个数据:";
cin>>m>>n;
Fun_1(m,n);
cout<<m<<"与"<<n<<"的最大公约数是:";
cout<<g<<endl;
cout<<m<<"与"<<n<<"的最小公倍数是:";
cout<<Fun_2(m,n)<<endl;
return 0;
}

二、运行结果:



三、心得体会:

 
      感觉函数很难,所以必须要更多的实验练习以加强自身对函数有关知识的学习及掌握程度。

四、知识点总结:

        辗转相除法求两个数的最大公约数的步骤如下:

 
      先用小的一个数除大的一个数,得第一个余数;

        再用第一个余数除小的一个数,得第二个余数;

        又用第二个余数除第一个余数,得第三个余数;

        这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数

 
    (如果最后的除数是1,那么原来的两个数是互质数)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: