gpt4 book ai didi

objective-c - 从函数内的循环返回数字列表

转载 作者:行者123 更新时间:2023-11-30 17:50:08 25 4
gpt4 key购买 nike

也许这是一个愚蠢的问题,但现在我学习了 Objective C,我试图扩展我的知识,从错误中学习。

所以我尝试将埃拉斯托斯特尼筛改造成一个函数。据我所知,当一个函数收到结果时,就决定函数停止。

我很好奇这是否是一种调整返回 i 的代码以发送 NSLog(@"Prime number %i", i); 中出现的所有数字列表的方法;以多次执行函数的方式

谢谢

我的代码

#import <Foundation/Foundation.h>

int erathos (int n)
{


int i, prime, multiple, P[n];

for (i = 2; i <= n; ++i)
{
P[i] = 1;
}

for (prime = 2; prime <= n; ++prime)
{
if (P[prime])

for (multiple = 2 * prime; multiple <= n; multiple += prime)
{


if (P[multiple]) {

P[multiple] = 0;

}
}
}

for (i = 2; i <= n; ++i)
{
if (P[i])
NSLog(@" Prime number %i", i);

}
return i;

}

int main(int argc, const char * argv[])
{

@autoreleasepool {
int erathos (int n);
NSLog(@"Erathos %i", erathos (150));
}
return 0;
}

最佳答案

根据我的评论,函数声明应如下所示:

NSArray* erathos(int n);

请注意,NSArray 是不可变的,这意味着一旦创建就无法更改它。如果你想添加值,你需要它的可变子类,NSMutableArray。

创建一个空的 NSMutableArray:

NSMutableArray *primesArray = [NSMutableArray array];

要将整数添加到其中,请使用

[primesArray addObject:[NSNumber numberWithInt:i]];

然后要返回它的不可变副本,请使用:

return [NSArray arrayWithArray:primesArray];

请注意,您可以只返回 NSMutableArray,但随后被调用者可能会更改它,这可能是不可取的。

可变数组和不可变副本都是自动释放的,因此当当前自动释放池耗尽时它们将被释放。要保留它们,您需要像这样保留它们:

[myObject retain];

要打印所有素数,您可以使用 foreach 结构:

for (NSNumber *n in primesArray) {
NSLog(@"Prime number: %i", [n intValue]);
}

关于objective-c - 从函数内的循环返回数字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17444368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com