
Objective-C实现整数N以内的质数算法(附完整源码)
类定义:定义了一个 方法声明: 初始化数组:创建一个布尔数组 标记非质数:从最小的质数开始,标记其倍数为非质数。 收集质数:遍历
发布日期:2025-04-26 00:50:17
浏览次数:3
分类:精选文章
本文共 1554 字,大约阅读时间需要 5 分钟。
Objective-C实现整数N以内的质数算法
介绍埃拉托斯特尼筛法
埃拉托斯特尼筛法(Sieve of Eratosthenes)是一种高效的算法,用于在一定范围内找出所有的质数。这种方法通过不断筛选非质数,保留质数,最终得到所有小于等于给定整数N的质数。
Objective-C实现代码
#import@interface PrimeNumbers : NSObject- (NSArray *)findPrimesUpToN:(int)N;@end
代码解释
PrimeNumbers
类,继承自NSObject
。findPrimesUpToN:(int)N
方法用于查找小于等于给定整数N的所有质数,并返回一个包含这些质数的数组。方法实现
@implementation PrimeNumbers- (NSArray*)findPrimesUpToN:(int)N { if (N < 2) { return [NSArray array]; } // 创建一个布尔数组表示每个数是否是质数 BOOL *isPrime = (BOOL *)malloc(N + 1); for (int i = 0; i <= N; i++) { isPrime[i] = true; } isPrime[0] = false; isPrime[1] = false; // 从最小的质数开始筛选 for (int i = 2; i * i <= N; i++) { if (isPrime[i]) { // 标记i的倍数为非质数 for (int j = i * i; j <= N; j += i) { isPrime[j] = false; } } } // 收集所有质数 NSMutableArray *primeNumbers = [NSMutableArray array]; for (int i = 0; i <= N; i++) { if (isPrime[i]) { [primeNumbers addObject:[NSNumber numberWithInt:i]]; } } free(isPrime); return [primeNumbers autorelease];}@end
使用说明
isPrime
,用于标记每个数是否为质数。isPrime
数组,收集所有为真的值(即质数)。示例使用
PrimeNumbers *primeFinder = [[PrimeNumbers alloc] init];NSArray*primes = [primeFinder findPrimesUpToN:100];NSLog(@"小于等于100的质数:%@", primes);[primeFinder release];
总结
通过埃拉托斯特尼筛法,我们可以高效地找出小于等于给定整数N的所有质数。上述代码实现了这一算法,适用于需要快速生成质数列表的场景。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月13日 07时17分49秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!