我是C ++的新手,我正在尝试制作一个计算素数因子的程序。我的算法大多没问题,但我不知道如何正确格式化功能,有人请帮我清理这个烂摊子
#include <iostream>
using namespace std;
void getPrimeFactor(int);
int factor(int fisrt, int last)
{
int i = 0;
for (i = fisrt; i <= last; i++)
int getPrimeFactor(int n)
{
if (i < 0)
i = -i;
// For i < 2; it is just i
if (i < 2)
return i;
// otherwise, for an even number it is 2
if (i % 2 == 0)
return 2;
// for other odd numbers, search for a divisor
// until SQRT (n) [conceptual] n / div >= div is
// equivalent to SQRT (n) >= div
for (int div = 3; i / div >= div; div += 2)
{
// if div is a divisor, just return it.
if (i % div == 0)
return div;
}
// There is no divisor (n is prime), return it.
return i;
}
return 0;
}
int main()
{
int fisrtN; int lastN; int counter; int answer;
cin >> fisrtN;
cin >> lastN;
answer = factor(fisrtN, lastN);
return(0);
cout << "Prime is" answer; " ";
}
答案 0 :(得分:0)
你无法在另一个体内定义函数体。
这是带有原始缩进的代码的简化版本:
void getPrimeFactor(int);
int factor(int fisrt, int last)
{
...
for (i = fisrt; i <= last; i++)
int getPrimeFactor(int n) // <-- illegal placement of function's definition
{
...
return i;
}
return 0;
}
int main()
{
...
return(0); // <-- redundant line, 0 is return automatically
... // <-- code after return statement will never be executed
}
请注意,缩进代码确实很重要。难以阅读的代码也很难理解,更容易出错〜&gt;以后它可能会花费你一些时间。尽量保持代码清洁。
另请注意,在开始时您已声明以下原型:
void getPrimeFactor(int);
但稍后在代码中您尝试定义函数:
int getPrimeFactor(int n)