我将编写一段代码(函数),该代码返回指向数组的指针。
但我不知道该怎么做。
我写的代码是:

int* prime_factor(int temp){
int ctr;
int *ret;
int i = 0;
while (temp != 1){
    ctr = 2;
    if (temp%ctr != 0){
        ctr++;
    }
    else {
        *(ret + i) = ctr;
        temp /= ctr;
    }
}
return ret;
}


我猜这是有必要的:

else {
        ret = new int[1];
        *(ret +i) = ctr;
        temp /= ctr;
    }


但是,正如您所知,此东西的实现需要删除已分配的内存,因此我们必须删除函数外部的内存,因此它将成为非标准函数。
确实,我想计算一个数字的素因子,然后将其返回。
有什么想法吗?我不知道该怎么做才能达到目标。
非常感谢。

最佳答案

我看到您的问题也带有标记C++,因此,您可以使用C ++。我真的不知道没有静态整数的意思。

使用vector

#include <vector>
vector<int> prime_factor(int number)
{
    int ctr = 2;
    vector<int> factors;

    while (number != 1)
    {
        if (number % ctr != 0)
            ctr++;
        else
        {
            factors.push_back(ctr);
            number /= ctr;
        }
    }
    return factors;
}


当您将向量与整数一起使用时,它知道如何自我销毁(“删除”)它。

例:

int main()
{
    for (auto &x : prime_factor(20))    // C++11
    {
        cout << x << endl;
    }
}


输出:

2
2
5

10-05 23:56
查看更多