Objective-C实现构造n以内的素数表(附完整源码)
发布日期:2025-04-26 05:37:38 浏览次数:2 分类:精选文章

本文共 1130 字,大约阅读时间需要 3 分钟。

Objective-C 实现构造 n 以内的素数表

在 Objective-C 中,埃拉托斯特尼筛法(Sieve of Eratosthenes)是一种高效的算法,可用于生成 n 以内的素数表。这是一种经典的算法,用于找出所有小于或等于给定整数 n 的素数。

以下是一个完整的 Objective-C 示例,展示如何实现该算法并生成素数表。

#import

@interface PrimeGenerator : NSObject

  • (NSArray *)generatePrimesUpTo:(int)n;
  • (void)printPrimes:(NSArray *)primes; @end

@implementation PrimeGenerator

  • (NSArray *)generatePrimesUpTo:(int)n { // 初始化一个布尔数组,表示每个数是否为素数 bool *isPrime = malloc(n + 1); for (int i = 0; i <= n; i++) { isPrime[i] = true; } isPrime[0] = false; isPrime[1] = false;

    // 从最小的素数 2 开始筛选 for (int i = 2; i * i <= n; i++) { if (isPrime[i]) { for (int j = i * i; j <= n; j += i) { isPrime[j] = false; } } }

    // 收集所有标记为 true 的数 NSMutableArray *primes = [NSMutableArray array]; for (int i = 2; i <= n; i++) { if (isPrime[i]) { [primes addObject:(id)NSNumber numberWithInt(i)]; } }

    free(isPrime); return [primes sortedArray]; }

  • (void)printPrimes:(NSArray *)primes { for (NSNumber *num in primes) { NSLog(@"%d", num.intValue); } }

@end

该代码实现了埃拉托斯特尼筛法,通过以下步骤生成 n 以内的素数表:

  • 初始化一个布尔数组 isPrime,标记每个数是否为素数
  • 将所有数标记为素数,除了 0 和 1
  • 从最小的素数 2 开始,标记其倍数为非素数
  • 最终收集所有标记为素数的数,返回结果
  • 该算法的时间复杂度为 O(n log log n),适用于较大的 n 值

    上一篇:Objective-C实现某文件夹下文件重命名(附完整源码)
    下一篇:Objective-C实现极小极大算法(附完整源码)

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年04月15日 22时16分20秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章