2016-07-12 78 views
-1

我試着製作一個程序來查找任意兩個數字的最小公倍數。我已經完成了大部分的工作,但是我的程序打印的是1-1000000的所有常用倍數,而不是第一個倍數。如何讓它只打印第一個 ?最低公用程序多個程序

#include <iostream> 
using namespace std; 

int main() { 
    cout << "Find the lowest common multiple of two numbers, just enter them one after the other" << endl; 
    int firstNum; 
    int secondNum; 
    cin >> firstNum; 
    cin >> secondNum; 
    int i; 

    for (i = 1; i < 1000001; i++) { 

     if (i % firstNum == 0 && i % secondNum == 0) { 

      cout << "these two number's LCM is" << i << endl; 
     } 
    } 



    system("pause"); 
    return 0; 

} 
+0

只是COUT後'加'break' << 「這兩個數字的LCM是」 <<我<< ENDL;' – DimChtz

+0

['打破;'(HTTP:// EN .cppreference.com/W/CPP /語言/休息)。此外,請重新考慮您對經常被認爲是不好做法的使用:['using namespace std;'](http://stackoverflow.com/q/1452721/1171191)和['endl'](http:// chris- sharpe.blogspot.co.uk/2016/02/why-you-shouldnt-use-stdendl.html)(這些是解釋的鏈接)。 – BoBTFish

回答

1

您可以添加break結束一個循環。在你的情況,你想它在您if聲明的末尾添加:

for (i = 1; i < 1000001; i++) { 
    if (i % firstNum == 0 && i % secondNum == 0) { 
     cout << "these two number's LCM is" << i << endl; 
     break; 
    } 
} 
0

你的問題是一個break聲明正如其他人提及。

但是更好的解決方案:lcm是用C++ 17標準化的!所以,你可以這樣做:

cout << lcm(firstNum, secondNum) << endl; 

如果您沒有訪問C++ 17然而,這已經可以在namespace experimentalhttp://en.cppreference.com/w/cpp/experimental/lcm

0

找到的第一個後,您需要從離開循環,這就是爲什麼它不斷打印其他值。

for (i = 1; i < 1000001; i++) { 

if (i % firstNum == 0 && i % secondNum == 0) { 
    cout << "these two number's LCM is" << i << endl; 
    break; 
} 

}