【无标题】

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

相关推荐
Felven9 小时前
A. Helmets in Night Light
c语言
Illusionna.10 小时前
C语言自动进行独立样本 t 检验
c语言·自动化·显著性·统计检验·独立样本t检验·ttest·levene
qq_4017004110 小时前
C语言 条件编译宏
c语言·开发语言
逑之11 小时前
C语言笔记5:函数
java·c语言·笔记
无限进步_11 小时前
【C语言&数据结构】对称二叉树:镜像世界的递归探索
c语言·开发语言·数据结构·c++·git·算法·visual studio
松涛和鸣11 小时前
49、智能电源箱项目技术栈解析
服务器·c语言·开发语言·http·html·php
凉、介11 小时前
SylixOS 中的 Unix Socket
服务器·c语言·笔记·学习·嵌入式·sylixos
X***078811 小时前
从底层逻辑到工程实践,深入理解C语言在计算机世界中的核心地位与持久价值
c语言·开发语言
智者知已应修善业12 小时前
【编写函数求表达式的值】2024-4-3
c语言·c++·经验分享·笔记·算法
HABuo12 小时前
【Linux进程(四)】进程切换&环境变量深入剖析
linux·运维·服务器·c语言·c++·ubuntu·centos