簡體   English   中英

C++中的LCM程序

[英]LCM program in C++

#include <iostream>
using std::cout;
using std::cin;

int main()
{

    int num1 = 0;
    int num2 = 0;

    cout << "Please enter two numbers (remember to put 
a space between them):\n";

    cin >> num1 >> num2;

    const int num_limit = num1 * num2;

    for (int i = 1; i <= num_limit; i++)
    {
        int product = num1 * i;
        int product2 = num2 * i;

        // test for when multiples are equal
        if (product == product2)
        {
        cout << "The LCM of " << num1 << " and " << 
num2 << " is: "; 
        }

     }
}

我試圖從用戶輸入的兩個整數中獲取 LCM。 for 循環中的 if 語句沒有按照我的意圖執行,因為當 product 和 product2 相等時沒有打印任何內容。 這個小問題的解決方案是什么?

int gcd(int a,int b)
{
    if(b==0)
        return a;
    else
        return gcd(b,a%b);  
}

int lcm(int a,int b)
{
    //Efficient Solution
    // a*b=gcd(a,b)*lcm(a,b)

    return (a*b)/gcd(a,b);
}

int main()
{
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int a,b;
    cin>>a>>b;
    cout<<lcm(a,b);
    return 0;
}

輸出

15 12
60

試試這個

//#include "stdafx.h"
#include <iostream>
#include <conio.h>
using std::cout;
using std::cin;

int main()
{

    int num1 = 0;
    int num2 = 0;

    cout << "Please enter two numbers (remember to put a space between them):\n";

    cin >> num1 >> num2;

    int num_limit = num1 * num2,LCM;
    for (int i = 1; i <= num_limit; i++)
    {
        LCM = num1 * i;

        // test for when multiples are equal
        if (LCM%num2==0) break;
    }
    cout << "The LCM of " << num1 << " and " << num2 << " is: " << LCM;
    _getch();// replace with getch(); if didn't work
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM