2016-01-26 3 views
-3

я писал код, который вычисляет два фактора любого заданного числа с помощью двух вложенных «В то время как» петель, но после того, как только один итерации цикла просто останавливаетсяВнезапный перерыв в цикле в то время как в программе, чтобы найти факторы

программы

#include <iostream> 
#include <conio.h> 
using namespace std; 
long int Password; 

void main() 
{ 
    long int n=2,n1=2; 
    cout<<"Type the number whose factor you need"<<endl; 
    cin>>Password; 
    while(n < 3600) 
    { 
     while(n1 < 3600) 
     { 
      if(n*n1 == Password) 
      { 
       cout<<"your Factors are "<<n<<" and "<<n1<<endl; 
       getch(); 
      } 
      else 
      { 
       n1++; 
       break; 
      } 
     } 
     n++; 
    } 
} 

выход работает только для небольших чисел, но когда немного большие числа вставлены программа завершается. Я не понимаю проблему, так как код в порядке. У меня есть менее мощный процессор?

+3

Скомпилирует? Всегда использовать фигурные скобки - предотвращает ошибки –

+0

@ EdHeal Да, программа построена в VS и компилируется в Turbo C++ – Vinay5forPrime

+0

«break;» должен выполняться, если условие выполнено. –

ответ

1

Ваша программа не вычисляет коэффициенты любого заданного числа. Кроме того, название номера «Пароль» является сбивающим с толку.

Может быть, вы хотите что-то подобное в C++:

#include <iostream> 

using namespace std; 

int main() { 
    unsigned int number; 

    cout << "Enter a positive integer whose factors you need: " << endl; 
    cin >> number; 

    cout << "Factors of " << number << " are "; 
    for (int i = 1; i <= number; ++i) { 
     if (number % i == 0) 
      cout << i << " "; 
    } 
    cout << endl; 

    return 0; 
} 

Как было отмечено в комментариях, в C++ вы должны int main() не void main(), хотя некоторые компиляторы поддерживают void main().