【无标题】

求前n个素数的方法

欢迎使用Markdown编辑器

上班公交上看了个求素数的方法,叫埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,外文名sieve of Eratosthenes,又称筛法。觉得代码用这种方法求前n个素数太浪费空间,于是突发奇想想了这个求前n个素数的方法。只保存已筛选出来的素数,算后面某个数是不是素数时,只需要跟已筛选出来的素数做余判断即可,所以代码及结果记录如下:

objectivec 复制代码
//  main.m
//  Prime
//
//  Created by caishuibin on 2025/11/30.
//  记得我最开始学素数时,我以为素数越后面会越稀疏,后来才发现它还是很稠密的,

#import <Foundation/Foundation.h>

//0: OK   1: Error
int printPrimeTo(int end)
{
    int const maxCnt = 100;
    int primeCnt = 1;
    int primeArr[maxCnt]={2};
    int i = 3,j;
    
    NSLog(@"%d",2);
    
    while(i < end)
    {
        bool isPrime = true;
        //j = 0;
        for(j = 0; j<primeCnt; j++)
        {
            if(i % primeArr[j] == 0)//
            {
                isPrime = false;
                break;
            }
            if(primeArr[j]*primeArr[j] > i)
            {
                break;
            }
        }
        if(isPrime)
        {
            if(primeCnt < maxCnt)
            {
                primeArr[primeCnt] = i;
                NSLog(@"%d delta=%d",i,i-primeArr[primeCnt - 1]);
                primeCnt++;
            }
            else
            {
                NSLog(@"maxCnt is too small");
                return primeCnt;
            }
        }
        i+=2;
    }
    return primeCnt;
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        int primeCnt = printPrimeTo(10000);
        NSLog(@"printCnt=%d",primeCnt);
    }
    return 0;
}

2025-11-30 22:22:47.575700+0800 Prime[32444:1726835] Hello, World!

2025-11-30 22:22:47.576333+0800 Prime[32444:1726835] 2

2025-11-30 22:22:47.576428+0800 Prime[32444:1726835] 3 delta=1

2025-11-30 22:22:47.576484+0800 Prime[32444:1726835] 5 delta=2

2025-11-30 22:22:47.576531+0800 Prime[32444:1726835] 7 delta=2

2025-11-30 22:22:47.576574+0800 Prime[32444:1726835] 11 delta=4

2025-11-30 22:22:47.576616+0800 Prime[32444:1726835] 13 delta=2

2025-11-30 22:22:47.576660+0800 Prime[32444:1726835] 17 delta=4

2025-11-30 22:22:47.576701+0800 Prime[32444:1726835] 19 delta=2

2025-11-30 22:22:47.576743+0800 Prime[32444:1726835] 23 delta=4

2025-11-30 22:22:47.576830+0800 Prime[32444:1726835] 29 delta=6

2025-11-30 22:22:47.576894+0800 Prime[32444:1726835] 31 delta=2

2025-11-30 22:22:47.576997+0800 Prime[32444:1726835] 37 delta=6

2025-11-30 22:22:47.577070+0800 Prime[32444:1726835] 41 delta=4

2025-11-30 22:22:47.577151+0800 Prime[32444:1726835] 43 delta=2

2025-11-30 22:22:47.577230+0800 Prime[32444:1726835] 47 delta=4

2025-11-30 22:22:47.577310+0800 Prime[32444:1726835] 53 delta=6

2025-11-30 22:22:47.578241+0800 Prime[32444:1726835] 59 delta=6

2025-11-30 22:22:47.578565+0800 Prime[32444:1726835] 61 delta=2

2025-11-30 22:22:47.578671+0800 Prime[32444:1726835] 67 delta=6

2025-11-30 22:22:47.585378+0800 Prime[32444:1726835] 71 delta=4

2025-11-30 22:22:47.585446+0800 Prime[32444:1726835] 73 delta=2

2025-11-30 22:22:47.585551+0800 Prime[32444:1726835] 79 delta=6

2025-11-30 22:22:47.585599+0800 Prime[32444:1726835] 83 delta=4

2025-11-30 22:22:47.585640+0800 Prime[32444:1726835] 89 delta=6

2025-11-30 22:22:47.585683+0800 Prime[32444:1726835] 97 delta=8

2025-11-30 22:22:47.585724+0800 Prime[32444:1726835] 101 delta=4

2025-11-30 22:22:47.586688+0800 Prime[32444:1726835] 103 delta=2

2025-11-30 22:22:47.586999+0800 Prime[32444:1726835] 107 delta=4

2025-11-30 22:22:47.587079+0800 Prime[32444:1726835] 109 delta=2

2025-11-30 22:22:47.587128+0800 Prime[32444:1726835] 113 delta=4

2025-11-30 22:22:47.587171+0800 Prime[32444:1726835] 127 delta=14

2025-11-30 22:22:47.587213+0800 Prime[32444:1726835] 131 delta=4

2025-11-30 22:22:47.587257+0800 Prime[32444:1726835] 137 delta=6

2025-11-30 22:22:47.588173+0800 Prime[32444:1726835] 139 delta=2

2025-11-30 22:22:47.588461+0800 Prime[32444:1726835] 149 delta=10

2025-11-30 22:22:47.588573+0800 Prime[32444:1726835] 151 delta=2

2025-11-30 22:22:47.588624+0800 Prime[32444:1726835] 157 delta=6

2025-11-30 22:22:47.588695+0800 Prime[32444:1726835] 163 delta=6

2025-11-30 22:22:47.589228+0800 Prime[32444:1726835] 167 delta=4

2025-11-30 22:22:47.589292+0800 Prime[32444:1726835] 173 delta=6

2025-11-30 22:22:47.590012+0800 Prime[32444:1726835] 179 delta=6

2025-11-30 22:22:47.590117+0800 Prime[32444:1726835] 181 delta=2

2025-11-30 22:22:47.590255+0800 Prime[32444:1726835] 191 delta=10

2025-11-30 22:22:47.590342+0800 Prime[32444:1726835] 193 delta=2

2025-11-30 22:22:47.590431+0800 Prime[32444:1726835] 197 delta=4

2025-11-30 22:22:47.590505+0800 Prime[32444:1726835] 199 delta=2

2025-11-30 22:22:47.590577+0800 Prime[32444:1726835] 211 delta=12

2025-11-30 22:22:47.590793+0800 Prime[32444:1726835] 223 delta=12

2025-11-30 22:22:47.591240+0800 Prime[32444:1726835] 227 delta=4

2025-11-30 22:22:47.591309+0800 Prime[32444:1726835] 229 delta=2

2025-11-30 22:22:47.591476+0800 Prime[32444:1726835] 233 delta=4

2025-11-30 22:22:47.591531+0800 Prime[32444:1726835] 239 delta=6

2025-11-30 22:22:47.591576+0800 Prime[32444:1726835] 241 delta=2

2025-11-30 22:22:47.591621+0800 Prime[32444:1726835] 251 delta=10

2025-11-30 22:22:47.591666+0800 Prime[32444:1726835] 257 delta=6

2025-11-30 22:22:47.591775+0800 Prime[32444:1726835] 263 delta=6

2025-11-30 22:22:47.591915+0800 Prime[32444:1726835] 269 delta=6

2025-11-30 22:22:47.592028+0800 Prime[32444:1726835] 271 delta=2

2025-11-30 22:22:47.592264+0800 Prime[32444:1726835] 277 delta=6

2025-11-30 22:22:47.592335+0800 Prime[32444:1726835] 281 delta=4

2025-11-30 22:22:47.592443+0800 Prime[32444:1726835] 283 delta=2

2025-11-30 22:22:47.592527+0800 Prime[32444:1726835] 293 delta=10

2025-11-30 22:22:47.592589+0800 Prime[32444:1726835] 307 delta=14

2025-11-30 22:22:47.592658+0800 Prime[32444:1726835] 311 delta=4

2025-11-30 22:22:47.592978+0800 Prime[32444:1726835] 313 delta=2

2025-11-30 22:22:47.593040+0800 Prime[32444:1726835] 317 delta=4

2025-11-30 22:22:47.593117+0800 Prime[32444:1726835] 331 delta=14

2025-11-30 22:22:47.593193+0800 Prime[32444:1726835] 337 delta=6

2025-11-30 22:22:47.593261+0800 Prime[32444:1726835] 347 delta=10

2025-11-30 22:22:47.594038+0800 Prime[32444:1726835] 349 delta=2

2025-11-30 22:22:47.594173+0800 Prime[32444:1726835] 353 delta=4

2025-11-30 22:22:47.594230+0800 Prime[32444:1726835] 359 delta=6

2025-11-30 22:22:47.594276+0800 Prime[32444:1726835] 367 delta=8

2025-11-30 22:22:47.594319+0800 Prime[32444:1726835] 373 delta=6

2025-11-30 22:22:47.594362+0800 Prime[32444:1726835] 379 delta=6

2025-11-30 22:22:47.594402+0800 Prime[32444:1726835] 383 delta=4

2025-11-30 22:22:47.594443+0800 Prime[32444:1726835] 389 delta=6

2025-11-30 22:22:47.594486+0800 Prime[32444:1726835] 397 delta=8

2025-11-30 22:22:47.594527+0800 Prime[32444:1726835] 401 delta=4

2025-11-30 22:22:47.594568+0800 Prime[32444:1726835] 409 delta=8

2025-11-30 22:22:47.595079+0800 Prime[32444:1726835] 419 delta=10

2025-11-30 22:22:47.595138+0800 Prime[32444:1726835] 421 delta=2

2025-11-30 22:22:47.595185+0800 Prime[32444:1726835] 431 delta=10

2025-11-30 22:22:47.595231+0800 Prime[32444:1726835] 433 delta=2

2025-11-30 22:22:47.595327+0800 Prime[32444:1726835] 439 delta=6

2025-11-30 22:22:47.595448+0800 Prime[32444:1726835] 443 delta=4

2025-11-30 22:22:47.595511+0800 Prime[32444:1726835] 449 delta=6

2025-11-30 22:22:47.595592+0800 Prime[32444:1726835] 457 delta=8

2025-11-30 22:22:47.595694+0800 Prime[32444:1726835] 461 delta=4

2025-11-30 22:22:47.595742+0800 Prime[32444:1726835] 463 delta=2

2025-11-30 22:22:47.595806+0800 Prime[32444:1726835] 467 delta=4

2025-11-30 22:22:47.595879+0800 Prime[32444:1726835] 479 delta=12

2025-11-30 22:22:47.596493+0800 Prime[32444:1726835] 487 delta=8

2025-11-30 22:22:47.596551+0800 Prime[32444:1726835] 491 delta=4

2025-11-30 22:22:47.596581+0800 Prime[32444:1726835] 499 delta=8

2025-11-30 22:22:47.596860+0800 Prime[32444:1726835] 503 delta=4

2025-11-30 22:22:47.597059+0800 Prime[32444:1726835] 509 delta=6

2025-11-30 22:22:47.597685+0800 Prime[32444:1726835] 521 delta=12

2025-11-30 22:22:47.597745+0800 Prime[32444:1726835] 523 delta=2

2025-11-30 22:22:47.597795+0800 Prime[32444:1726835] 541 delta=18

2025-11-30 22:22:47.597859+0800 Prime[32444:1726835] maxCnt is too small

2025-11-30 22:22:47.597926+0800 Prime[32444:1726835] printCnt=100

Program ended with exit code: 0

相关推荐
口袋物联1 小时前
设计模式之单例模式在 C 语言中的应用(含 Linux 内核实例)
c语言·单例模式·设计模式
zore_c2 小时前
【C语言】数据在内存中的存储(超详解)
c语言·开发语言·数据结构·经验分享·笔记
达不溜先生 ୧⍢⃝୨2 小时前
循环赛日程表问题
c语言·算法·递归·分治·循环赛日程表·动态二维数组
不知所云,3 小时前
2.windows c/c++ 编译器安装, mingw和clang
c语言·c++·windows·mingw·clang·c编译器
LCG米3 小时前
工业自动化嵌入式开发实战:基于ARM7与μC/OS-II的焊接机控制系统设计与实现
运维·c语言·自动化
Yue丶越3 小时前
【C语言】内存函数
c语言·开发语言
apocelipes3 小时前
Linux的binfmt_misc机制
linux·c语言·c++·python·golang·linux编程·开发工具和环境
渡我白衣3 小时前
哈希的暴力美学——std::unordered_map 的底层风暴、扩容黑盒与哈希冲突终极博弈
java·c语言·c++·人工智能·深度学习·算法·哈希算法
LCG米4 小时前
工业自动化案例解析:基于ARM7与μC/OS-II的焊接机控制系统设计
运维·c语言·自动化