博客
关于我
Objective-C实现sieveOfEratosthenes埃拉托色尼筛法求素数算法 (附完整源码)
阅读量:792 次
发布时间:2023-02-19

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

Objective-C实现埃拉托色尼筛法求素数算法

埃拉托色尼筛法(Sieve of Eratosthenes)是一种高效的算法,用于寻找小于或等于给定数n的所有素数。该算法通过逐步筛选不满足素数条件的数,最终保留所有素数。以下是使用Objective-C实现该算法的详细代码示例。

代码实现

#import 
void sieveOfEratosthenes(int n) { // 创建一个布尔数组来标记哪些数是素数 BOOL *isPrime = (BOOL*)malloc(n + 1); // 初始化所有数为素数 for (int i = 0; i <= n; i++) { isPrime[i] = true; } // 设置第一个素数2为真 isPrime[0] = false; isPrime[1] = false; // 从最小的素数开始筛选 for (int i = 2; i <= sqrt(n); i++) { if (isPrime[i]) { // 标记i的倍数为非素数 for (int j = i * i; j <= n; j += i) { isPrime[j] = false; } } } // 释放内存 free(isPrime);}

代码解释

  • 初始化数组:首先,我们创建一个布尔数组isPrime,用于标记每个数是否为素数。数组的长度为n + 1,索引从0到n。

  • 标记非素数:初始时,所有数都被标记为素数。然后,我们将索引0和1标记为非素数,因为它们不是素数。

  • 筛选素数:从最小的素数2开始遍历。如果某个数是素数,那么它的所有倍数都被标记为非素数。

  • 释放内存:在完成筛选后,我们释放isPrime数组的内存,避免内存泄漏。

  • 通过这种方法,我们可以高效地找到小于或等于n的所有素数。该算法的时间复杂度为O(n log log n),在处理较大数值时表现非常优异。

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

    你可能感兴趣的文章
    Objective-C实现Http协议下载文件(附完整源码)
    查看>>
    Objective-C实现huffman哈夫曼编码算法(附完整源码)
    查看>>
    Objective-C实现ID3贪心算法(附完整源码)
    查看>>
    Objective-C实现IIR 滤波器算法(附完整源码)
    查看>>
    Objective-C实现IIR数字滤波器(附完整源码)
    查看>>
    Objective-C实现insertion sort插入排序算法(附完整源码)
    查看>>
    Objective-C实现integer partition整数分区算法(附完整源码)
    查看>>
    Objective-C实现integerPartition整数划分算法(附完整源码)
    查看>>
    Objective-C实现interpolation search插值搜索算法(附完整源码)
    查看>>
    Objective-C实现Interpolation search插值查找算法(附完整源码)
    查看>>
    Objective-C实现intersection交集算法(附完整源码)
    查看>>
    Objective-C实现intro sort内省排序算法(附完整源码)
    查看>>
    Objective-C实现inverse matrix逆矩阵算法(附完整源码)
    查看>>
    Objective-C实现inversions倒置算法(附完整源码)
    查看>>
    Objective-C实现isalpha函数功能(附完整源码)
    查看>>
    Objective-C实现islower函数功能(附完整源码)
    查看>>
    Objective-C实现isPowerOfTwo算法(附完整源码)
    查看>>
    Objective-C实现isupper函数功能(附完整源码)
    查看>>
    Objective-C实现ItemCF算法(附完整源码)
    查看>>
    Objective-C实现ItemCF算法(附完整源码)
    查看>>