2015-09-22 3 views
0

Я работаю над простым алгоритмом для gcd двух чисел. Я не знаю, почему он сработает, когда я закончил вводить a и b.Codeblocks Project.exe перестает отвечать C++

Вот код:

#include<iostream> 
#include<fstream> 

using namespace std; 

int main() 
{ 
    int a, b, d, i, max; 
    cin >> a; 
    cin >> b; 
    if (a<b) 
    { 
     max = b; 
    } 
    else 
    { 
     max = a; 
    } 

    for (i = 0; i <= max; i++) 
    { 
     if (a%i == 0 && b%i == 0) 
     { 
      d = i; 
     } 
    } 
    cout << d << endl; 
} 
+4

Похоже, большое время, чтобы [узнать, как использовать отладчик] (http://ericlippert.com/2014/03/05/ как отлаживать-малые программы /) для отладки небольших программ. –

+0

О, ладно, прошу прощения за сообщение такого плохого вопроса. –

+0

'a% i', когда' i' равно 0, является вашей проблемой –

ответ

0

проблема заключается в: a%i == 0 && b%i == 0, когда я = 0. этот код работает отлично теперь:

#include #include

using namespace std; 

int main() 
{ 
    int a, b, d, i, max; 
    cin >> a; 
    cin >> b; 
    if (a<b) 
    { 
     max = b; 
    } 
    else 
    { 
     max = a; 
    } 

    for (i = 1; i <= max; i++) 
    { 
     if (a%i == 0 && b%i == 0) 
     { 
      d = i; 
     } 
    } 
    cout << d << endl; 
} 
Смежные вопросы