C++ Help can't get it work
<p>Write a program that generates all the factors of a number entered by the user. For instance, the number 12 has the factors 2 * 2 * 3. This program has the following requirements:</p>

<ol>
<li><p>The user must enter a positive integer. If the user enters something else, your program should output an error message and let the user enter a new value. Use a do/while loop to make sure the user input is successful.</p></li>
<li><p>The factors must be output in increasing order. The lowest factor your program should report is 2. </p></li>
<li><p>Your program should output 4 factors per line, each factor in a field of 10 characters. (Hint: the number of factors output determines when to output endl!)</p></li>
<li><p>You will need a while loop to report the factors. Here are some helpful hints:</p>

<ol>
<li><p>If (a % b == 0) then a is a factor of b.</p></li>
<li><p>When you have found a factor, output the factor and then reduce the number you are working with by dividing the number by the factor… ie) b = b / a;</p></li>
</ol></li>
</ol>

<p><strong>I have this code I can't get it to display the factors. After you enter the number it just ends with out displaying the factors.</strong></p>

<pre><code>#include&lt;iostream&gt;

using namespace std;

int factor(int&amp; n)
{
  for(int k=2; k&lt;=n; k++)
    if(n%k==0)
    {
      n = n/k;
      return k;
    }
}


int main()
{
  int n;
  int p=0;

  do
  {
    cout &lt;&lt; "Enter a Positive Integer :";
    cin &gt;&gt; n;
  } while(n&lt;=0);

  cout &lt;&lt; "Factors are " &lt;&lt; endl;

  while(1)
  {
    if(n==1) break;
    cout &lt;&lt; factor(n) &lt;&lt; " ";
    p++;
    if(p%4==0) 
      cout &lt;&lt; endl;   // new line after every 4 factors !!

    system("pause");
    return 0;
  }
}
</code></pre>
