博客
关于我
Objective-C实现费马检测算法(附完整源码)
阅读量:794 次
发布时间:2023-02-22

本文共 2303 字,大约阅读时间需要 7 分钟。

Objective-C实现费马素数检测算法

费马素数检测算法(Fermat primality test)是一种经典的素数检测方法,基于费马小定理。以下是Objective-C实现该算法的代码示例及解析。
#import 
```objective-c @interface FermatPrimalityTest : NSObject - (BOOL)isPrimeNumber:(NSUInteger)number; @end @implementation FermatPrimalityTest - (BOOL)isPrimeNumber:(NSUInteger)number { if (number <= 1) { return false; } // 基本素数列表,用于快速排除明显非素数 static NSArray *basicPrimes = @[@2, @3, @5, @7, @11, @13]; NSIndexSet *primeIndexes = [NSIndexSet indexSetWithNumbers:@[@2, @3, @5, @7, @11, @13]]; // 检查基本素数列表 if ([primeIndexes containsIndex: (NSUInteger)number % 2]) { return true; } if ([primeIndexes containsIndex: (NSUInteger)number % 3]) { return true; } if ([primeIndexes containsIndex: (NSUInteger)number % 5]) { return true; } if ([primeIndexes containsIndex: (NSUInteger)number % 7]) { return true; } if ([primeIndexes containsIndex: (NSUInteger)number % 11]) { return true; } if ([primeIndexes containsIndex: (NSUInteger)number % 13]) { return true; } // 费马检测算法的核心实现 if (!basicPrimes || basicPrimes.count == 0) { return false; } // 计算基数 NSUInteger base = 2; while (base <= number) { if (number % base == 0) { return false; } base += 1; // 优化:提前终止,当基数超过平方根时 if (base * base > number) { break; } } // 进行费马检测 unsigned long long a = 2; unsigned long long n = number; unsigned long long x = 1; while (x != 1 && x != n-1) { if (x == n-1) { break; } x = (x * x) % n; } if (x == n-1) { return true; } return false; } @end

该实现首先排除了一些明显的非素数情况,并对基本素数列表进行了快速检测。接着,采用费马检测算法进行进一步验证。该算法通过模运算和快速幂运算原理,能够有效判断一个数是否为素数。

转载地址:http://pcsfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现读写bmp文件 (附完整源码)
查看>>
Objective-C实现读写CSV文件(附完整源码)
查看>>
Objective-C实现读写INI文件(附完整源码)
查看>>
Objective-C实现读写json文件实例(附完整源码)
查看>>
Objective-C实现读写wav音频文件(附完整源码)
查看>>
Objective-C实现读写二进制文件(附完整源码)
查看>>
Objective-C实现读写蓝牙串口(附完整源码)
查看>>
Objective-C实现读写锁(附完整源码)
查看>>
Objective-C实现调度器(附完整源码)
查看>>
Objective-C实现调节笔记本屏幕亮度(附完整源码)
查看>>
Objective-C实现调节系统音量(与任务栏音量同步)(附完整源码)
查看>>
Objective-C实现责任链模式(附完整源码)
查看>>
Objective-C实现质因数算法(附完整源码)
查看>>
Objective-C实现贪婪合并排序算法(附完整源码)
查看>>
Objective-C实现费马检测算法(附完整源码)
查看>>
Objective-C实现跳跃游戏的动态编程自上而下的方法算法(附完整源码)
查看>>
Objective-C实现跳跃游戏的动态编程自下而上的方法的算法(附完整源码)
查看>>