通过例子进阶学习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循环
程序运行后效果如下:
所有文章,坚持原创。如有转载,敬请标注出处。