编写一个程序,生成用户输入的数字的所有因子。例如,数字12的因子为2 * 2 * 3.该程序具有以下要求:
用户必须输入正整数。如果用户输入其他内容,您的程序应输出错误消息并让用户输入新值。使用do / while循环确保用户输入成功。
必须按递增顺序输出因子。您的计划应报告的最低因素是2.
您的程序每行应输出4个因子,每个因子包含10个字符的字段。 (提示:输出的因子数决定何时输出endl!)
您需要一个while循环来报告因素。以下是一些有用的提示:
如果(a%b == 0)则a是因子b。
找到因子后,输出因子,然后通过将数字除以因子来减少您使用的数字...即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;
}
}
答案 0 :(得分:5)
由于你的(缺乏)缩进很难看到,但这一部分:
system("pause");
return 0;
内部 while(1)
循环。它应该在while循环之外。
答案 1 :(得分:0)
因此在缩进后很明显:
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;
}
在计算并打印出从main返回的第一个因子之后。所以请缩进代码并保持正确的格式。即使您在if
,for
等下单行,也请将它们括在大括号中。