通过例子进阶学习C++(二)最小公倍数

本文是通过例子学习C++的第二篇,通过这个例子可以快速入门c++相关的语法。

题目要求:输入两个整数,求其最小公倍数。

解答方法一:两个数的最小公倍数,是这两个数中的大数,或者是这2个数的倍数中的最小数字。

这两个数字用num1和num2存储,max表示其中最大数字。如果max能同时整除num1和num2,则max为起最小公倍数,否则max=max+1,重复该循环直到max能同时整除num1和num2。

#include <iostream>
using namespace std;
int main()
{
	int num1,num2,max;
	cin>>num1>>num2;
    
    //求num1和num2中的最大数字
    if(num1>num2){
        max = num1;
    }else{
        max = num2;
    }
        
    while(max %num1 !=0 || max %num2 !=0){
        max ++;
    }
    cout<<"数字"<<num1<<"和数字"<<num2<<"的最小公倍数为:"<<max;
	return 0;
}

通过该例子,可以学习:

  • if-else语句
  • while循环

程序运行后效果如下:

上述求最小公倍数的方法,执行效率不高。可以改进如下:

解答方法二:两个数的最小公倍数,一定是两个数中最大数的整数倍,可以从1倍,2倍,...直到是两个数字的倍数为止。

#include <iostream>
using namespace std;

int main()
{
	int num1,num2,max,n=1,current;
	cin>>num1>>num2;
 
    // 通过三元表达式 求num1和num2中的最大数字
    max = (num1 > num2) ? num1 : num2;
    do{
        current = max * n;
        n++;
    }while(current %num1 !=0 || current %num2 !=0);

    cout<<"数字"<<num1<<"和数字"<<num2<<"的最小公倍数为:"<<current;
	return 0;
}

通过该例子,可以学习:

  • 三元表达式
  • do-while循环

程序运行后效果如下:

posted @ 2020-01-12 20:26  siwei718  阅读(3587)  评论(0编辑  收藏  举报