1--1,000,000之间所有的质数

来源:互联网 发布:apache日志 json 编辑:程序博客网 时间:2024/05/28 05:17

环境:Xcode7.2

目的:以最快的方式(目前我觉得时最快的)计算出1到1,000,000之间的所有质数。大概2.5秒,求指正。


// 质数:2、3、5、7...    // 装质数的数组,预存一个质数(3)    NSMutableArray * array = [NSMutableArray array];    array = @[@"3"].mutableCopy;        // 从3开始,所有质数均是奇数    NSInteger i = 3;    NSLog(@"%ld",i);        // while循环    while (i <= 1000000) {        // 判断是否是质数的计数        NSInteger num = 0;        // 循环每一个小于当前i的质数        for (NSString * j in array) {                        // i % 所有小于i的质数,结果为0时,i为合数            if (i % [j integerValue] == 0) {                // 计数 +1                num ++;                // 当判断出i为合数时,跳出循环                break;            }                        // 当j大于i的开根时,i % j无意义,跳出循环。(no why!)            if ([j integerValue] >= sqrt(i)) {                                break;            }        }                // 计数为0时,i为质数,并将i加入数组中        if (num == 0) {                        [array addObject:[NSString stringWithFormat:@"%ld",i]];            //            NSLog(@"%ld",i);        }                // no why!        i = i + 2;    }        // 质数个数,还差个“2”,所以 +1    NSLog(@"%ld",array.count + 1);


0 0