-3

我是 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; "  ";
}
4

1 回答 1

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
}

请注意,代码的缩进确实很重要。难以阅读的代码也难以理解并且更容易出错〜>稍后可能会花费您一些时间。尽量保持你的代码干净。

另请注意,一开始您已经声明了以下原型:

void getPrimeFactor(int);

但稍后在您尝试定义函数的代码中:

int getPrimeFactor(int n)
于 2013-09-23T22:41:30.893 回答