제한된 비트 폭에 대한 결정론적 소수성 테스트
문제: 32비트 숫자가 소수인지 (결정론적으로) 결정합니다
해결책: (C++에서)
시험할 기지. 처음 4개의 소수 진수를 사용하면 모든 32비트 정수에 대해 //가 결정론적입니다. https://oeis.org/A014233 참고하세요. int64_t 베이스[] = {2, 3, 5, 7}; inline int countTrailingZeros(uint64_t n) { 만약 (n == 0) 64를 반환할 경우 반환; 반환 __builtin_ctzll(n); } int64_t 모듈러 지수(int64_t 기저, int64_t 지수, int64_t 모듈러스) { int64_t res = 1; int64_t b = 기본 % 모듈러스; int64_t e = 지수; while (e > 0) { if (e & 1) { // 32비트 정수 입력을 가정하기 때문에 오버플로우가 되지 않습니다. res = (res) b = % 모듈러스; } b = (b * b) % 모듈러스; e >>= 1; } res를 반환; } bool isPrime(int64_t n) { 만약 (n < 2) 거짓으로 반환; (n < 4) 참으로 반환한다면; 만약 (!