【无标题】

求前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

相关推荐
C++ 老炮儿的技术栈27 分钟前
基于MFC+原生GDI手动自绘仪表盘控件
c语言·c++·visual studio·控件·工业控制·gdi·自绘
小肝一下40 分钟前
3. 单链表
c语言·数据结构·c++·算法·leetcode·链表·dijkstra
炸膛坦客10 小时前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机
程序员Rock17 小时前
上位机开发-MODBUS面试常见问题
c语言·c++·面试·职场和发展·上位机
blevoice1 天前
抖抖燃脂机单 AC6966B 主控调试踩坑:Type-C 整机供电喇叭无声排障
c语言·开发语言·单片机
小小晓.1 天前
C++小白记:C风格字符串和数组用法
c语言·开发语言·c++
深念Y1 天前
开发者如何清理和迁移C盘堆积的垃圾
c语言·开发语言
十月的皮皮1 天前
STM32从零到量产开发:四路继电器工业控制模块开发实战笔记(小白视角)
c语言·笔记·stm32·stm32cubemx·hal库
不正经学生1 天前
C 语言函数深入剖析(基础篇)—— 从零理解函数的每一个细节
c语言·开发语言·数据结构·算法·c#
天空'之城1 天前
C 语言工业级通用组件手写 10:字节序转换
c语言·字节序·大小端·嵌入式通信·工业级组件