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