【最小公倍数问题】求求各位大佬解决一下我的疑惑。

想问一下,如果用这种简单方***有什么问题。(或者说,请各位赐教为什么求最小公倍数一定要先求最大公约数,必要性是什么?)
(不考虑先求最小公约数)

题目:输入两个正整数,输出最小公倍数。

下面是C++代码:
int main()
{
    int A, B;
    std::cin >> A >> B;
    int C = A * B;
    int D=0;
    int i = 1;
    if (C == 0)
    {
        D = 0;
    }
    else if (A >= B&& A% B == 0)
    {
        D = A;
    }
    else if (A < B && B % A == 0)
    {
        D = B;
    }
    else
    {
        for (i = 1; i < C + 1; i++)
        {
            if (i % A == 0 && i % B == 0)
            {
                D = i;
                break;
            }
            
            if (i = C)
            {
                D = C;
                break;
            }
        }
    }

    std::cout << D;

    return 0;
}

我知道我这种做法很蠢,但特别想问一下,为什么不能这么做。(这样case通过只有60).
#C学习路线##笔试题目#
全部评论
1. lcm是素因子的并集,***是素因子的交集,A*B将两个数的素因子集合相加,去掉他们的交集就得到了并集。所以没有什么必要性,仅仅是因为我们可以在logn内求出***,这样很快。所以我们选择先求出***从而求出lcm; 2. 你的算法没有错,但你的代码的for循环内的第2个if有严重错误。我很好奇是什么数据能让你通过60%。。。
点赞 回复
分享
发布于 2020-06-05 18:11
😅for循环中的第二个if应该是if(i==C),这里打错了。不好意思。
点赞 回复
分享
发布于 2020-06-06 14:09
联易融
校招火热招聘中
官网直投

相关推荐

头像
04-09 14:29
Java
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务