我将编写一段代码(函数),该代码返回指向数组的指针。
但我不知道该怎么做。
我写的代码是:
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