# 威尔逊定理素性判定器

用威尔逊定理判定素性：当且仅当 n 为素数时 (n−1)! ≡ −1 (mod n)。逐项累加 (n−1)! mod n（n ≤ 10⁷），与确定性 Miller–Rabin 交叉验证，并对合数 n 检验合数阶乘律（n > 4 时 (n−1)! ≡ 0 (mod n)，唯一例外 n = 4）。可显示 k! mod n 的逐步乘积序列（n ≤ 200）。

> 标准页面: https://elysiatools.com/zh/tools/wilson-theorem-checker

- **分类:** Math & Numbers

- **关键词:** 威尔逊定理, 素性检验, 阶乘, 模运算, 米勒-拉宾, 数论, 素数判定

## 概述

威尔逊定理素性判定器基于数论经典定理 (n−1)! ≡ −1 (mod n) 判定整数 n 是否为素数。工具支持计算 2 ≤ n ≤ 10⁷ 范围内的阶乘模余数，自动与确定性 Miller–Rabin 测试交叉验证，并在 n 为合数时检验合数阶乘律，同时支持针对 n ≤ 200 输出逐步乘积序列。

## 输入项

- **数值 n** (text): 2 ≤ n ≤ 10⁷ (one factorial-modulo pass).
- **输出详细度** (select)

## 适用场景

- 需要通过经典威尔逊定理严格验证一个正整数是否为素数或合数时。
- 教学或研究数论模运算时，需要观察 k! mod n 逐步乘积演变轨迹时。
- 验证合数阶乘律在合数（如 n > 4 时 (n−1)! ≡ 0 (mod n)）下的表现与特例时。

## 工作原理

- 输入待检测的正整数 n（2 ≤ n ≤ 10⁷）并选择输出详细度（仅判定结果或包含逐步轨迹）。
- 系统通过逐项累乘并取模的方式计算阶乘余数 (n−1)! mod n，避免大数溢出。
- 比对计算余数是否等于 n − 1（即 −1 mod n），同时运行确定性 Miller–Rabin 算法进行交叉比对与合数定理检验。
- 若选择逐步追踪且 n ≤ 200，系统将列出从 k = 1 到 n−1 的每个中间模乘积 k! mod n。

## 使用案例

- 数论课程教学中演示威尔逊同余式与模阶乘的计算过程与乘积周期。
- 验证中小型整数的素性并分析合数因式分解在阶乘模运算中的消解特性。
- 算法研究人员测试与比对阶乘模乘法与确定性 Miller–Rabin 的一致性。

## 常见问题

### 威尔逊定理的内容是什么？

对于大于 1 的自然数 n，当且仅当 (n−1)! ≡ −1 (mod n)（即余数为 n − 1）时，n 是素数。

### 为什么合数 n 的 (n−1)! mod n 通常为 0？

当合数 n > 4 时，其素因子都会出现在 1 到 n−1 的乘积项中，因此 (n−1)! 必然包含 n 的完整因子，使模余数坍缩为 0。

### 合数阶乘律中 n = 4 为何是特例？

对于 n = 4，(4−1)! = 3! = 6，6 mod 4 = 2 ≠ 0，因此 n = 4 是大于 1 的合数中唯一余数不为 0 的特例。

### 逐步乘积轨迹（trace）支持多大范围？

逐步乘积轨迹输出仅支持 n ≤ 200 的整数，以保证页面展示清晰和计算响应速度。

### Miller–Rabin 交叉验证的作用是什么？

用于使用独立的高效确定性素性检测算法校验威尔逊定理的计算结果，确保判定结论准确一致。

## 相关工具

- [完全数判定器](https://elysiatools.com/zh/tools/perfect-number-checker): 判定 n 是否为完全数（等于其真因子之和，即 σ(n) = 2n）。对 n（≤ 10¹²）做试除因子分解，由素数幂的 σ 公式求出 σ(n) 与真因子和，分类为亏数/完全数/盈数，给出充裕指数 σ(n)/n；对完全数还原欧几里得–欧拉形式 2^(p−1)·(2^p − 1)，并列出 10¹² 以内的全部七个偶完全数。真因子个数 ≤ 200 时可列出真因子表。
- [素数检查器](https://elysiatools.com/zh/tools/prime-number-checker): 检查一个数字是否为素数（大于1且只能被1和自身整除的自然数）
- [量纲分析单位约分导师](https://elysiatools.com/zh/tools/dimensional-analysis-unit-cancellation-tutor): 将单位换算拆成逐步 factor-label 约分：显示分子/分母单位如何消去，自动识别倒置换算因子，并对维度不一致与学生数值答案给出教学反馈。
- [PERT 网络分析器（期望工期/方差/完工概率）](https://elysiatools.com/zh/tools/pert-network-analyzer): 对 2–20 个活动做 PERT 三点估计分析（每行：名称、乐观 a、最可能 m、悲观 b、紧前活动）：te = (a+4m+b)/6，σ² = ((b−a)/6)²；在 te 上运行 CPM 得关键路径、期望项目工期 TE 与项目方差（关键路径上 σ² 之和）；给出目标工期 T 时按正态近似计算 Z = (T−TE)/σ 与完工概率 Φ(Z)。a≤m≤b 违规、循环依赖按业务拒绝；σ≈0 的确定性网络按确定性处理。经典例：A(2,4,6)、B(3,5,7)、C(2,3,10)、D(4,6,8, B C) → TE = 15，σ² = 1.3333，T = 16 时概率 ≈ 80.7%。
- [M/M/1 排队系统计算器](https://elysiatools.com/zh/tools/queuing-theory-mm1): 计算 M/M/1 单服务台排队系统的稳态指标：泊松到达（率 λ）、指数服务（率 μ）、FCFS。要求 λ < μ，否则系统不稳定（队列无限增长）并按业务拒绝处理。输出利用率 ρ、系统空闲概率 P0、系统中平均人数 L、队列平均等待人数 Lq、平均逗留时间 W、平均等待时间 Wq、顾客需等待的概率 ρ，以及状态概率 P(n) = (1−ρ)ρⁿ（n = 0…5），并用 Little 公式 L = λW、Lq = λWq 交叉验证。经典例：λ = 4/小时、μ = 6/小时 → ρ = 0.6667、L = 2、Lq = 1.3333、W = 0.5、Wq = 0.3333。
- [M/M/c 多服务台排队计算器](https://elysiatools.com/zh/tools/queuing-theory-mmc): 计算 M/M/c 多服务台排队系统的稳态指标（泊松到达率 λ、c 个相同指数服务台、各台服务率 μ、共享 FCFS 队列）：给出通达量 a = λ/μ、每台利用率 ρ、系统空闲概率 P0、Erlang-C 等待概率 Pw、队列平均人数 Lq、系统平均人数 L、平均逗留时间 W 与等待时间 Wq，并用 Little 公式与 Pw→Lq 关系交叉验证。要求 λ < cμ，否则按业务拒绝（不稳定）；c = 1 时公式退化为 M/M/1。经典例：λ = 6/小时、μ = 3/小时、c = 3 → P0 = 0.1111、Pw = 0.4444、Lq = 0.8889、L = 2.8889。
- [组合计算器](https://elysiatools.com/zh/tools/combination-calculator): 计算组合(C(n,r))，支持不同类型：无重复/有重复组合、二项式系数，以及详细的组合分析。
- [复数计算器](https://elysiatools.com/zh/tools/complex-number-calculator): 对复数执行结构化运算与分析，输出代数形式和极坐标信息

## 示例

- [Android Java 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-java): Android Java 图像处理示例，包括图像读取保存、缩放和格式转换
- [Android Kotlin 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-kotlin): Android Kotlin 图像处理示例，包括图像读取保存、缩放和格式转换
- [Web Python 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-python): Web Python 图像处理示例，使用 PIL/Pillow 包括读取、保存、缩放和格式转换
- [Web Rust 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-rust): Web Rust 图像处理示例，包括图像读取保存、缩放和格式转换
