【无标题】

求前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 Prime32444:1726835 Hello, World!

2025-11-30 22:22:47.576333+0800 Prime32444:1726835 2

2025-11-30 22:22:47.576428+0800 Prime32444:1726835 3 delta=1

2025-11-30 22:22:47.576484+0800 Prime32444:1726835 5 delta=2

2025-11-30 22:22:47.576531+0800 Prime32444:1726835 7 delta=2

2025-11-30 22:22:47.576574+0800 Prime32444:1726835 11 delta=4

2025-11-30 22:22:47.576616+0800 Prime32444:1726835 13 delta=2

2025-11-30 22:22:47.576660+0800 Prime32444:1726835 17 delta=4

2025-11-30 22:22:47.576701+0800 Prime32444:1726835 19 delta=2

2025-11-30 22:22:47.576743+0800 Prime32444:1726835 23 delta=4

2025-11-30 22:22:47.576830+0800 Prime32444:1726835 29 delta=6

2025-11-30 22:22:47.576894+0800 Prime32444:1726835 31 delta=2

2025-11-30 22:22:47.576997+0800 Prime32444:1726835 37 delta=6

2025-11-30 22:22:47.577070+0800 Prime32444:1726835 41 delta=4

2025-11-30 22:22:47.577151+0800 Prime32444:1726835 43 delta=2

2025-11-30 22:22:47.577230+0800 Prime32444:1726835 47 delta=4

2025-11-30 22:22:47.577310+0800 Prime32444:1726835 53 delta=6

2025-11-30 22:22:47.578241+0800 Prime32444:1726835 59 delta=6

2025-11-30 22:22:47.578565+0800 Prime32444:1726835 61 delta=2

2025-11-30 22:22:47.578671+0800 Prime32444:1726835 67 delta=6

2025-11-30 22:22:47.585378+0800 Prime32444:1726835 71 delta=4

2025-11-30 22:22:47.585446+0800 Prime32444:1726835 73 delta=2

2025-11-30 22:22:47.585551+0800 Prime32444:1726835 79 delta=6

2025-11-30 22:22:47.585599+0800 Prime32444:1726835 83 delta=4

2025-11-30 22:22:47.585640+0800 Prime32444:1726835 89 delta=6

2025-11-30 22:22:47.585683+0800 Prime32444:1726835 97 delta=8

2025-11-30 22:22:47.585724+0800 Prime32444:1726835 101 delta=4

2025-11-30 22:22:47.586688+0800 Prime32444:1726835 103 delta=2

2025-11-30 22:22:47.586999+0800 Prime32444:1726835 107 delta=4

2025-11-30 22:22:47.587079+0800 Prime32444:1726835 109 delta=2

2025-11-30 22:22:47.587128+0800 Prime32444:1726835 113 delta=4

2025-11-30 22:22:47.587171+0800 Prime32444:1726835 127 delta=14

2025-11-30 22:22:47.587213+0800 Prime32444:1726835 131 delta=4

2025-11-30 22:22:47.587257+0800 Prime32444:1726835 137 delta=6

2025-11-30 22:22:47.588173+0800 Prime32444:1726835 139 delta=2

2025-11-30 22:22:47.588461+0800 Prime32444:1726835 149 delta=10

2025-11-30 22:22:47.588573+0800 Prime32444:1726835 151 delta=2

2025-11-30 22:22:47.588624+0800 Prime32444:1726835 157 delta=6

2025-11-30 22:22:47.588695+0800 Prime32444:1726835 163 delta=6

2025-11-30 22:22:47.589228+0800 Prime32444:1726835 167 delta=4

2025-11-30 22:22:47.589292+0800 Prime32444:1726835 173 delta=6

2025-11-30 22:22:47.590012+0800 Prime32444:1726835 179 delta=6

2025-11-30 22:22:47.590117+0800 Prime32444:1726835 181 delta=2

2025-11-30 22:22:47.590255+0800 Prime32444:1726835 191 delta=10

2025-11-30 22:22:47.590342+0800 Prime32444:1726835 193 delta=2

2025-11-30 22:22:47.590431+0800 Prime32444:1726835 197 delta=4

2025-11-30 22:22:47.590505+0800 Prime32444:1726835 199 delta=2

2025-11-30 22:22:47.590577+0800 Prime32444:1726835 211 delta=12

2025-11-30 22:22:47.590793+0800 Prime32444:1726835 223 delta=12

2025-11-30 22:22:47.591240+0800 Prime32444:1726835 227 delta=4

2025-11-30 22:22:47.591309+0800 Prime32444:1726835 229 delta=2

2025-11-30 22:22:47.591476+0800 Prime32444:1726835 233 delta=4

2025-11-30 22:22:47.591531+0800 Prime32444:1726835 239 delta=6

2025-11-30 22:22:47.591576+0800 Prime32444:1726835 241 delta=2

2025-11-30 22:22:47.591621+0800 Prime32444:1726835 251 delta=10

2025-11-30 22:22:47.591666+0800 Prime32444:1726835 257 delta=6

2025-11-30 22:22:47.591775+0800 Prime32444:1726835 263 delta=6

2025-11-30 22:22:47.591915+0800 Prime32444:1726835 269 delta=6

2025-11-30 22:22:47.592028+0800 Prime32444:1726835 271 delta=2

2025-11-30 22:22:47.592264+0800 Prime32444:1726835 277 delta=6

2025-11-30 22:22:47.592335+0800 Prime32444:1726835 281 delta=4

2025-11-30 22:22:47.592443+0800 Prime32444:1726835 283 delta=2

2025-11-30 22:22:47.592527+0800 Prime32444:1726835 293 delta=10

2025-11-30 22:22:47.592589+0800 Prime32444:1726835 307 delta=14

2025-11-30 22:22:47.592658+0800 Prime32444:1726835 311 delta=4

2025-11-30 22:22:47.592978+0800 Prime32444:1726835 313 delta=2

2025-11-30 22:22:47.593040+0800 Prime32444:1726835 317 delta=4

2025-11-30 22:22:47.593117+0800 Prime32444:1726835 331 delta=14

2025-11-30 22:22:47.593193+0800 Prime32444:1726835 337 delta=6

2025-11-30 22:22:47.593261+0800 Prime32444:1726835 347 delta=10

2025-11-30 22:22:47.594038+0800 Prime32444:1726835 349 delta=2

2025-11-30 22:22:47.594173+0800 Prime32444:1726835 353 delta=4

2025-11-30 22:22:47.594230+0800 Prime32444:1726835 359 delta=6

2025-11-30 22:22:47.594276+0800 Prime32444:1726835 367 delta=8

2025-11-30 22:22:47.594319+0800 Prime32444:1726835 373 delta=6

2025-11-30 22:22:47.594362+0800 Prime32444:1726835 379 delta=6

2025-11-30 22:22:47.594402+0800 Prime32444:1726835 383 delta=4

2025-11-30 22:22:47.594443+0800 Prime32444:1726835 389 delta=6

2025-11-30 22:22:47.594486+0800 Prime32444:1726835 397 delta=8

2025-11-30 22:22:47.594527+0800 Prime32444:1726835 401 delta=4

2025-11-30 22:22:47.594568+0800 Prime32444:1726835 409 delta=8

2025-11-30 22:22:47.595079+0800 Prime32444:1726835 419 delta=10

2025-11-30 22:22:47.595138+0800 Prime32444:1726835 421 delta=2

2025-11-30 22:22:47.595185+0800 Prime32444:1726835 431 delta=10

2025-11-30 22:22:47.595231+0800 Prime32444:1726835 433 delta=2

2025-11-30 22:22:47.595327+0800 Prime32444:1726835 439 delta=6

2025-11-30 22:22:47.595448+0800 Prime32444:1726835 443 delta=4

2025-11-30 22:22:47.595511+0800 Prime32444:1726835 449 delta=6

2025-11-30 22:22:47.595592+0800 Prime32444:1726835 457 delta=8

2025-11-30 22:22:47.595694+0800 Prime32444:1726835 461 delta=4

2025-11-30 22:22:47.595742+0800 Prime32444:1726835 463 delta=2

2025-11-30 22:22:47.595806+0800 Prime32444:1726835 467 delta=4

2025-11-30 22:22:47.595879+0800 Prime32444:1726835 479 delta=12

2025-11-30 22:22:47.596493+0800 Prime32444:1726835 487 delta=8

2025-11-30 22:22:47.596551+0800 Prime32444:1726835 491 delta=4

2025-11-30 22:22:47.596581+0800 Prime32444:1726835 499 delta=8

2025-11-30 22:22:47.596860+0800 Prime32444:1726835 503 delta=4

2025-11-30 22:22:47.597059+0800 Prime32444:1726835 509 delta=6

2025-11-30 22:22:47.597685+0800 Prime32444:1726835 521 delta=12

2025-11-30 22:22:47.597745+0800 Prime32444:1726835 523 delta=2

2025-11-30 22:22:47.597795+0800 Prime32444:1726835 541 delta=18

2025-11-30 22:22:47.597859+0800 Prime32444:1726835 maxCnt is too small

2025-11-30 22:22:47.597926+0800 Prime32444:1726835 printCnt=100

Program ended with exit code: 0

相关推荐
Hello:CodeWorld8 小时前
C 风格变参 vs C++ 变参模板:核心区别与选型指南
c语言·c++·算法
十月的皮皮10 小时前
C语言学习笔记20260606- 求月份天数三种写法
c语言·笔记·学习
caimouse11 小时前
Reactos 第 5 章 进程与线程 — 5.8 Windows 的 APC 机制
c语言·windows
努力攻坚操作系统13 小时前
编程语言编译运行机制对比:C / Java / Python
java·c语言·python
学会去珍惜14 小时前
C语言简介
c语言·开发语言
凡人叶枫15 小时前
Effective C++ 条款07:为多态基类声明 virtual 析构函数
linux·c语言·开发语言·c++
matlabgoodboy15 小时前
计算机java程序代写python代码编写c/c++代做qt设计php开发matlab
java·c语言·python
caimouse15 小时前
Reactos 第 5 章 进程与线程 — 5.11 线程本地存储 TLS
c语言·windows
格发许可优化管理系统16 小时前
Mentor许可证使用规定全解析
java·大数据·c语言·开发语言·c++
caimouse18 小时前
Reactos 第 5 章 进程与线程 — 5.12 进程挂靠
c语言·windows