2016-07-12 10 views
-1

私は、任意の2つの数字の最低公倍数を見つけるプログラムを作ろうとしました。私はそこでの方法のほとんどを得ていますが、私のプログラムは最初のものの代わりに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は<< << "これら二つの数のLCMは" I <<てendl後' break'を追加; ' – DimChtz

+0

['破る; '](のhttp:// EN .cppreference.com/w/cpp/language/break)。また、しばしば悪い習慣とみなされるものを再考してください:['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!だから、やるだけのことができます:あなたがC++ 17へのアクセス権を持っていない場合は、まだこれはnamespace experimentalですでに提供されています

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

:最初のものを見つけた後http://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; 
} 

}

関連する問題