C++帮助无法使其工作

1 c++

编写一个程序,生成用户输入的数字的所有因子.例如,数字12的因子为2*2*3.该程序具有以下要求:

  1. 用户必须输入正整数.如果用户输入其他内容,您的程序应输出错误消息并让用户输入新值.使用do/while循环确保用户输入成功.

  2. 必须按递增顺序输出因子.您的计划应报告的最低因素是2.

  3. 你的程序应该每行输出4个因子,每个因子在10个字符的字段中.(提示:输出因子的数量决定何时输出endl!)

  4. 您需要一个while循环来报告这些因素.以下是一些有用的提示:

    1. 如果(a%b == 0)则a是b的因子.

    2. 当您找到一个因子后,输出该因子,然后通过将该数除以因子来减少您正在使用的数...即b = b/a;

我有这个代码我无法让它显示因素.输入数字后,它结束时不显示因子.

#include<iostream>

using namespace std;

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


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

  do
  {
    cout << "Enter a Positive Integer :";
    cin >> n;
  } while(n<=0);

  cout << "Factors are " << endl;

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

    system("pause");
    return 0;
  }
}
Run Code Online (Sandbox Code Playgroud)

San*_*ker 5

由于你的(缺乏)缩进很难看到,但这一部分:

system("pause");
return 0;
Run Code Online (Sandbox Code Playgroud)

内部while(1)循环.它应该在while循环之外.