注册 登录
编程论坛 C++教室

求大佬给个参考!!

黑鸭 发布于 2020-06-23 10:32, 1531 次点击
只有本站会员才能查看附件,请 登录
8 回复
#2
牧人马2020-06-23 21:07
第一个网上方法多的是,先用递归或者循环求两个数a,b的最大公因数,然后用a*b/最大公因数就行
第二个省事的话用vector<int>去写,用while(cin>>num) {if(num==0) break;else push_back......};,在循环同时统计sum和其他数据
网上可能有关于最小公倍数更优的算法,建议百度
#3
黑鸭2020-06-23 22:16
回复 2楼 牧人马
试了一下还是不会
#4
黑鸭2020-06-23 22:16
回复 2楼 牧人马
也试了一下不会哈哈,不知道大神可不可以帮我写出来谢谢
#5
牧人马2020-06-23 22:20
哪里不会说明白,不赞同空手要代码
#6
黑鸭2020-06-24 10:07
回复 5楼 牧人马
#include <iostream>
#include <numeric>
using namespace std;

int main( void )
{
    unsigned a, b;
    if( !(cin>>a>>b) )
        return 1;
    cout <<  lcm(a,b) << endl;
}
我写成这样了编译不了,最后那里的endl不行
#7
黑鸭2020-06-24 10:09
回复 5楼 牧人马
说错了,是1cm那里编译不了,你帮我看看什么问题
#8
牧人马2020-06-24 10:31
lcm是numeric头文件中的函数,打开numeric头文件发现我用的VS版本不支持numeric里的lcm,求最小公倍数也是很基础的算法了,自己动手写一下
#9
雪影辰风2020-06-25 22:34
程序代码:

#include <iostream>
using namespace std;
int gcd(int a,int b);
int lcm(int a,int b);
int main( void ) {
    unsigned a, b;
    if( !(cin>>a>>b) )
        return 1;
    cout <<  lcm(a,b) << endl;
}
int gcd(int num1,int num2) {
    if(num1%num2==0)
        return num2;
    else return  gcd(num2,num1%num2);
}
int lcm(int a,int b) {
    int temp_lcm;
    temp_lcm=a*b/gcd(a,b);//最小公倍数等于两数之积除以最大公约数
    return temp_lcm;
}

直接贴代码了,自己可以理解一下,也就是手写lcm函数和gcd函数。代码Copy到Dev-C++里讲是没声明lcm这个函数(嗯……解释一下,我不是不会用VS,是因为VS不支持单个文件编译,所以一般小代码用Dev测试)
1