博客
关于我
Objective-C实现构造n以内的素数表(附完整源码)
阅读量:801 次
发布时间:2023-02-21

本文共 1103 字,大约阅读时间需要 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 值

    转载地址:http://frifk.baihongyu.com/

    你可能感兴趣的文章
    OpenMP 线程互斥锁
    查看>>
    OpenMV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    OpenObserve云原生可观测平台本地Docker部署与远程访问实战教程
    查看>>
    openoffice使用总结001---版本匹配问题unknown document format for file: E:\apache-tomcat-8.5.23\webapps\ZcnsDms\
    查看>>
    views
    查看>>
    OpenPPL PPQ量化(2):离线静态量化 源码剖析
    查看>>
    OpenPPL PPQ量化(3):量化计算图的加载和预处理 源码剖析
    查看>>
    OpenPPL PPQ量化(4):计算图的切分和调度 源码剖析
    查看>>
    OpenPPL PPQ量化(5):执行引擎 源码剖析
    查看>>
    openpyxl 模块的使用
    查看>>
    OpenResty & Nginx:详细对比与部署指南
    查看>>
    openresty 前端开发入门六之调试篇
    查看>>
    OpenResty(nginx扩展)实现防cc攻击
    查看>>
    openresty完美替代nginx
    查看>>
    Openresty框架入门详解
    查看>>
    OpenResty(1):openresty介绍
    查看>>
    OpenResty(2):OpenResty开发环境搭建
    查看>>
    OpenResty(3):OpenResty快速入门之安装lua
    查看>>
    OpenResty(4):OpenResty快速入门
    查看>>
    OpenResty(5):Openresty 模板渲染
    查看>>