判断题: 为素数且 时,——这就是费马小定理。
考点:费马小定理回顾(A1)。
解析: 素数、 → 。✅ 正确
排除法:无(判断题)。混淆点:条件两条——素数模 + 不整除。
关联 · 费马的等价形式(A2):另一形态。
费马小定理的等价形式是?
考点:费马的等价形式(A2)。
解析: 对所有整数 成立( 时两边都是 0)——是 的推广形态。✅ 正确
排除法:无(判断题)。混淆点:等价形式放宽了 条件。
关联 · a^p mod p 输出(I3):代码验证。
费马小定理的典型应用是?
考点:费马的应用(A3)。
解析:两大应用——求模素数的逆元()与指数降幂(指数对 取模)。✅ 正确
排除法:无(判断题)。混淆点:求最大值/排序/图遍历与费马无关。
关联 · 费马求逆元(I2):应用代码。
判断题:费马小定理的逆命题不成立——存在合数 与整数 ()使 。
考点:费马的逆命题(A4)。
解析:逆命题不成立——合数 也可能满足 (伪素数),"费马条件 ⇒ 素数"是错误推理。✅ 正确
排除法:无(判断题)。混淆点:这是费马测试的软肋(E3/H1)。
关联 · 伪素数(A5):反例实体。
"伪素数"指的是?
考点:伪素数(A5)。
解析:伪素数 = 满足某基 的费马条件的合数(341 对基 2:)。✅ 正确
排除法:无(判断题)。混淆点:伪素数是合数,不是素数。
关联 · 伪素数 341(M3):代码实证。
卡迈克尔数(如 561)的特点是?
考点:卡迈克尔数(A6)。
解析:卡迈克尔数(561 等)= 对所有互质基都满足费马条件的合数——费马测试对其完全失效。✅ 正确
排除法:无(判断题)。混淆点:比普通伪素数更"顽固"。
关联 · Miller-Rabin 思想(E4):卡迈克尔数的克星。
欧拉函数 的计算公式是?
考点:欧拉函数公式(B1)。
解析:——对每个不同质因子打折。✅ 正确
排除法:无(判断题)。混淆点: 只在 为素数时正确。
关联 · φ 公式输出(J1):代码版。
判断题: 时,——欧拉函数是积性函数。
考点:欧拉函数的积性(B2)。
解析: 时 ——积性函数。✅ 正确
排除法:无(判断题)。混淆点:不互质时不成立( 但 )。
关联 · φ 积性验证(J2):代码版。
( 素数)等于?
考点:φ(p^k)(B3)。
解析:—— 中每 个数有 1 个被 整除。✅ 正确
排除法:无(判断题)。混淆点: 是错误直觉(含与 不互质的数)。
关联 · 欧拉函数公式(B1):特例。
等于?
考点:φ 的计算(B4)。
解析:。✅ 正确
排除法:无(判断题)。混淆点: 的质因子是 2 和 5,各打折一次。
关联 · φ 公式输出(J1):同数值代码题。
欧拉降幂公式是?( 时)
考点:欧拉降幂(B5)。
解析:互质时 ——指数可对 取模。✅ 正确
排除法:无(判断题)。混淆点:注意"取模为 0 时指数取 "的细节(L4)。
关联 · 降幂计算(J4):代码版。
欧拉定理的典型应用是?
考点:欧拉定理的应用(B6)。
解析:欧拉定理用于合数模的指数降幂——费马只覆盖素数模。✅ 正确
排除法:无(判断题)。混淆点:欧拉定理不能完全判定素数(那是威尔逊/测试的事)。
关联 · 欧拉降幂(B5):降幂即应用。
等于?
考点:欧拉函数示例(B7)。
解析:(1、2、4、5、7、8)。✅ 正确
排除法:无(判断题)。混淆点:9 是 ,公式给 。
关联 · φ(p^k)(B3):k=2 实例。
威尔逊定理的内容是?
考点:威尔逊定理陈述(C1)。
解析: 素数 ⇔ ——阶乘与素性的充要关系。✅ 正确
排除法:无(判断题)。混淆点:是 不是 ()。
关联 · 威尔逊的逆命题(C2):双向性。
判断题:威尔逊定理的逆命题成立——若 ,则 是素数。
考点:威尔逊的逆命题(C2)。
解析:逆命题成立—— 则 素数(否则 的因子会出现在阶乘中)。✅ 正确
排除法:无(判断题)。混淆点:与费马形成对比——费马逆命题不成立。
关联 · 威尔逊与费马对比(C6):强弱对比。
判断题:威尔逊定理给出了素数的充要条件判定——理论上可以完全判定素数,只是阶乘计算代价巨大。
考点:威尔逊判定素数(C3)。
解析:威尔逊给出充要条件判定——理论完备,但阶乘计算代价巨大。✅ 正确
排除法:无(判断题)。混淆点:理论强 ≠ 实用强。
关联 · 威尔逊的局限(C5):代价分析。
威尔逊定理的典型应用是?
考点:威尔逊的应用(C4)。
解析:应用 = 计算 、化简含阶乘的同余式(如 20! mod 23)。✅ 正确
排除法:无(判断题)。混淆点:快速排序/gcd/最短路与威尔逊无关。
关联 · 阶乘模应用(K7):应用代码。
判断题:威尔逊定理判定素数需要计算 —— 稍大就不可计算,因此只用于理论推导与小规模手算,不用于实际判定。
考点:威尔逊的局限(C5)。
解析: 随 爆炸增长——只用于理论推导与小规模手算,不用于实际判定。✅ 正确
排除法:无(判断题)。混淆点:工程判定用 Miller-Rabin。
关联 · 判定方法选择(D7):工程选择。
判断题:威尔逊定理是充要条件(双向),费马小定理只是必要条件(逆命题不成立)——威尔逊理论上更强,但计算上更贵。
考点:威尔逊与费马对比(C6)。
解析:威尔逊是充要(双向),费马是必要(单向)——威尔逊理论更强但计算更贵。✅ 正确
排除法:无(判断题)。混淆点:强与贵的权衡是数论判定的经典主题。
关联 · 三大定理总表(D1):总表。
等于?
考点:威尔逊真题计算(C7)。
解析:。✅ 正确
排除法:无(判断题)。混淆点:(即 的代表元)。
关联 · (p-1)! mod p(K2):代码版。
费马、欧拉、威尔逊三大定理的正确总表是?
考点:三大定理总表(D1)。
解析:费马(素数模、)、欧拉(互质、)、威尔逊(充要、)——三者的精确陈述。✅ 正确
排除法:无(判断题)。混淆点:条件与结论的精确对应,S 组单选高频。
关联 · 条件对比(D2):条件矩阵。
判断题:费马要求素数模;欧拉只要求 与模互质(模可合数);威尔逊是充要条件——三者的条件强度:威尔逊 > 费马 > 欧拉(适用范围欧拉最广)。
考点:条件对比(D2)。
解析:费马要素数模;欧拉只要求互质(模可合数);威尔逊是充要条件——适用范围欧拉最广、判定力威尔逊最强。✅ 正确
排除法:无(判断题)。混淆点:"条件强度"与"判定强度"是两个维度。
关联 · 三大定理总表(D1):总表对照。
模 10(合数)下做指数降幂,应选用?
考点:应用场景(D3)。
解析:模 10 是合数 → 降幂用欧拉定理(费马不适用)。✅ 正确
排除法:无(判断题)。混淆点:模合数 + 费马 = 经典错误。
关联 · 欧拉定理的应用(B6):合数模降幂。
判断题:降幂链 = 费马(素数模)→ 欧拉(互质 + 合数模)→ 广义欧拉降幂(不互质时指数加 的扩展形式)——难度与适用范围递增。
考点:降幂链(D4)。
解析:降幂链 = 费马(素数模)→ 欧拉(互质合数模)→ 广义欧拉(不互质,指数 )——适用范围递增。✅ 正确
排除法:无(判断题)。混淆点:广义形式是"指数加 φ(m)"的补偿。
关联 · 欧拉降幂公式(F3):广义形式。
判断题: 为素数时 ,欧拉定理退化为费马小定理——费马是欧拉的特例。
考点:定理互推(D5)。
解析: 素数时 → 欧拉定理退化为费马小定理。✅ 正确
排除法:无(判断题)。混淆点:特例关系——费马 ⊂ 欧拉。
关联 · 费马是欧拉的特例(J 组 22 章 E5):衔接。
下列哪个命题恒为真?
考点:真题综合(D6)。
解析:恒真命题 = 威尔逊方向( 素数 ⇒ );B 是威尔逊逆命题的否定形式(错);C 是费马逆命题(错);D 无依据。✅ 正确
排除法:无(判断题)。混淆点:辨析"哪个方向恒真"是真题套路。
关联 · 威尔逊定理陈述(C1):方向性。
实际判定大整数是否为素数,工程选择是?
考点:判定方法选择(D7)。
解析:工程判定大整数素数 = Miller-Rabin(多轮随机基)——快且误判率极低。✅ 正确
排除法:无(判断题)。混淆点:威尔逊算不动、费马被伪素数骗、试除太慢。
关联 · Miller-Rabin 思想(E4):工程解。
试除法判定素数的时间复杂度是?
考点:试除法回顾(E1)。
解析:试除 → 。✅ 正确
排除法:无(判断题)。混淆点:试除到 是 (错误写法)。
关联 · 试除输出(M1):代码版。
费马素性测试的做法是?
考点:费马素性测试(E2)。
解析:随机基 检查 ——不满足必合数;满足"可能素数"。✅ 正确
排除法:无(判断题)。混淆点:单向可靠——判合数可靠、判素数不可靠。
关联 · 费马测试代码(I5):代码版。
判断题: 是合数,但 ——341 是基 2 的伪素数,费马测试会被它骗过。
考点:伪素数反例(E3)。
解析: 且 ——费马测试被骗。✅ 正确
排除法:无(判断题)。混淆点:341 是最小的基 2 伪素数,经典反例。
关联 · 伪素数(A5):概念题代码化。
Miller-Rabin 测试相对费马测试的改进是?
考点:Miller-Rabin 思想(E4)。
解析:费马检查 + 二次探测(检查 的非平凡根)+ 多轮随机基。✅ 正确
排除法:无(判断题)。混淆点:二次探测是识破伪素数的关键增量。
关联 · 概率判定概念(E6):概率语义。
判断题:试除法与威尔逊定理都是确定性判定(结果一定正确);费马/Miller-Rabin 是概率判定(极小概率误判)。
考点:确定性判定(E5)。
解析:试除与威尔逊是确定性判定;费马/Miller-Rabin 是概率判定(极小概率误判)。✅ 正确
排除法:无(判断题)。混淆点:概率判定结果本身是确定的,只是"可能错"。
关联 · 判定方法选择(D7):选择矩阵。
判断题:概率素性测试的"概率"指误判概率(如 Miller-Rabin 每轮误判 ,多轮后趋近 0)——不是"结果有时对有时错"。
考点:概率判定概念(E6)。
解析:"概率"指误判概率(Miller-Rabin 每轮 ≤ 1/4,多轮趋零)——不是结果随机。✅ 正确
排除法:无(判断题)。混淆点:k 轮后误判 ≤ ,工程上 20 轮即可放心。
关联 · Miller-Rabin 思想(E4):误判率来源。
快速幂 ( 很大)的核心思想是?
考点:快速幂回顾(F1)。
解析:二进制拆分指数——位为 1 乘入、底数平方,。✅ 正确
排除法:无(判断题)。混淆点:连乘是 。
关联 · 快速幂填空(O5):代码版。
判断题: 时, 的值随 呈周期性(周期整除 )——这是降幂的根基。
考点:指数循环节(F2)。
解析:互质时 呈周期、周期整除 ——降幂的根基。✅ 正确
排除法:无(判断题)。混淆点:周期(阶)是 的因子(G3)。
关联 · 循环节输出(L2):代码版。
广义欧拉降幂公式是?( 时)
考点:欧拉降幂公式(F3)。
解析:广义欧拉降幂:()——不要求互质。✅ 正确
排除法:无(判断题)。混淆点:指数加 是对不互质情形的补偿。
关联 · 降幂链(D4):广义一环。
等于?(,)
考点:降幂实例(F4)。
解析:,(取指数 4)→ 。✅ 正确
排除法:无(判断题)。混淆点:指数取模为 0 时取 本身,不是 0。
关联 · 降幂计算(J4):代码版。
计算 且 是"指数塔"级大数时,正确做法是?
考点:大指数处理(F5)。
解析:指数塔级大数 → 欧拉降幂递归:指数对 取模, 逐层缩小到 1。✅ 正确
排除法:无(判断题)。混淆点:直接算 必溢出。
关联 · 大指数降幂(L1):代码版。
判断题:模幂是 RSA 加密/解密的核心运算—— 与 都靠快速幂高效完成。
考点:模幂应用(F6)。
解析:RSA 的 与 都靠快速幂——模幂是密码学核心运算。✅ 正确
排除法:无(判断题)。混淆点:效率来自快速幂 。
关联 · 密码学演示(N6):迷你 RSA。
判断题: 是 模 有逆元、欧拉定理可用的共同前提——互质是模运算的"入场券"。
考点:gcd 相关回顾(G1)。
解析: 是逆元存在、欧拉定理可用的共同前提。✅ 正确
排除法:无(判断题)。混淆点:互质是模运算的"入场券"。
关联 · 逆元存在的条件(J 组 22 章 C2):衔接。
判断题: 统计的正是 中与 互质的数——欧拉函数是"互质"的计数函数。
考点:互质与欧拉(G2)。
解析: 统计的正是与 互质的数的个数。✅ 正确
排除法:无(判断题)。混淆点:欧拉函数 = 互质计数函数。
关联 · 互质统计(N1):代码版。
判断题: 时,满足 的最小正整数 称为 模 的阶,且 。
考点:阶与循环(G3)。
解析:最小 使 称为 的阶,且 。✅ 正确
排除法:无(判断题)。混淆点:阶是 的因子——循环节长度的理论依据。
关联 · 指数循环节(F2):阶与周期。
判断题:若 模 的阶等于 ,则 称为原根—— 遍历所有与 互质的剩余类。
考点:原根概念(G4)。
解析:阶恰等于 的元素 为原根—— 的幂遍历所有与 互质的剩余类。✅ 正确
排除法:无(判断题)。混淆点:原根存在性依赖 的结构(如素数必有原根)。
关联 · 离散对数思想(G5):原根的用途。
判断题:离散对数问题(已知 ,求 使 )计算困难——这是 Diffie-Hellman 密钥交换的安全基础。
考点:离散对数思想(G5)。
解析:已知 求 ()计算困难——Diffie-Hellman 的安全基础。✅ 正确
排除法:无(判断题)。混淆点:普通对数是容易的,模意义下是困难的。
关联 · 数论在密码学(G6):三大支柱之一。
判断题:RSA(模幂+逆元)、Diffie-Hellman(离散对数)、素性测试(Miller-Rabin)——现代密码学三大支柱都建在数论之上。
考点:数论在密码学(G6)。
解析:RSA(模幂+逆元)、Diffie-Hellman(离散对数)、素性测试——密码学三大支柱都在数论上。✅ 正确
排除法:无(判断题)。混淆点:教学定位——知道数论"为什么重要"。
关联 · 密码学演示(N6):迷你演示。
判断题: 但 341 是合数——"费马条件满足 ⇒ 素数"是错误的推理。
考点:费马逆命题误判(H1)。
解析:341 满足 但它是合数——"费马条件 ⇒ 素数"错误。✅ 正确
排除法:无(判断题)。混淆点:单向推理的纪律。
关联 · 伪素数反例(E3):同例双题。
判断题: 素数 ⇔ ——两个方向都成立,方向不能只记一半。
考点:威尔逊方向(H2)。
解析: 素数 ⇔ ——两个方向都成立,别只记一半。✅ 正确
排除法:无(判断题)。混淆点:与费马的单向性形成对照。
关联 · 威尔逊的逆命题(C2):方向性。
判断题: 而不是 —— 统计"与 互质"的个数,不是 。
考点:欧拉函数计算错(H3)。
解析: 不是 11——统计互质个数而非 。✅ 正确
排除法:无(判断题)。混淆点: 只在 素数时成立。
关联 · φ 公式错(P4):代码错误版。
判断题:互质降幂 要求 ——不互质时必须用广义降幂(指数加 )。
考点:降幂条件(H4)。
解析:互质降幂要求 ;不互质必须用广义降幂(指数加 )。✅ 正确
排除法:无(判断题)。混淆点:条件检查是降幂第一步(P3)。
关联 · 降幂条件错(P3):错误示范。
判断题:以下结论全部正确——"费马要素数模且逆命题不成立;欧拉对互质情形恒成立;威尔逊是充要条件;伪素数能骗过费马测试但骗不过 Miller-Rabin"。
考点:综合判断(H5)。
解析:四结论全对:费马要素数模且逆命题不成立;欧拉对互质恒成立;威尔逊充要;伪素数骗费马、骗不过 Miller-Rabin。✅ 正确
排除法:无(判断题)。混淆点:本章核心结论收官自查。
关联 · 本章全部核心结论:收官综合判断题。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 cout << qpow(2, 6, 7); // 费马:2^6 mod 7 15 return 0; 16}
单选题:程序输出是?
考点:费马验证输出(I1)。
解析:——费马小定理验证。正确答案 A。
实现要点:快速幂算 ,素数模下应为 1。手算:。
排除法:B 是底数;C 是 -1;D 无依据。
关联 · 费马小定理回顾(A1):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 cout << qpow(4, 5, 7); // inv(4) = 4^(7-2) mod 7 15 return 0; 16}
单选题:程序输出是?(4 模 7 的逆元)
考点:费马求逆元(I2)。
解析::、、——4 的逆元是 2。正确答案 A。
实现要点:费马求逆元 = 快速幂 。手算:验证 。
排除法:B 是底数;C 是 1;D 无依据。
关联 · 费马求逆元(J 组 22 章 D1):衔接。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 cout << qpow(5, 7, 7); // 费马等价形式:a^p ≡ a (mod p) 15 return 0; 16}
单选题:程序输出是?
考点:a^p mod p 输出(I3)。
解析:——等价形式 。正确答案 A。
实现要点:(对任意 )。手算:费马 。
排除法:B 是 1();C/D 无依据。
关联 · 费马的等价形式(A2):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 int n = 341; 15 cout << qpow(2, n - 1, n); // 2^340 mod 341 16 return 0; 17}
单选题:程序输出是?(341 = 11 × 31 是合数,但它是基 2 伪素数)
考点:伪素数检测(I4)。
解析:——341 是基 2 伪素数()。正确答案 A。
实现要点:伪素数检测 = 合数 + 费马条件成立。手算:程序验证 。
排除法:B/C/D 无依据。
关联 · 伪素数反例(E3):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 int n = 15; 15 // 费马测试:检查 2^(n-1) mod n 16 cout << (qpow(2, n - 1, n) == 1 ? "MAYBE-PRIME" : "COMPOSITE"); 17 return 0; 18}
单选题:程序输出是?(15 是合数,)
考点:费马测试代码(I5)。
解析:: → → COMPOSITE。正确答案 A。
实现要点:费马测试 = 检查 是否为 1;不为 1 必合数。手算:利用 化简。
排除法:B 是"可能素数";C/D 无依据。
关联 · 费马素性测试(E2):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 费马降幂:2^100 mod 7,先 100 mod 6 = 4 15 cout << qpow(2, 100 % 6, 7); 16 return 0; 17}
单选题:程序输出是?()
考点:费马降幂(I6)。
解析: → 。正确答案 A。
实现要点:费马降幂 = 指数对 取模。手算:。
排除法:B 是 ;C 是 ;D 无依据。
关联 · 费马的应用(A3):降幂代码。
01#include <bits/stdc++.h> 02using namespace std; 03int phi(int n) { 04 int r = n; 05 for (int i = 2; i * i <= n; i++) { 06 if (n % i == 0) { 07 r = r / i * (i - 1); 08 while (n % i == 0) n /= i; 09 } 10 } 11 if (n > 1) r = r / n * (n - 1); 12 return r; 13} 14int main() { 15 cout << phi(100); 16 return 0; 17}
单选题:程序输出是?
考点:φ 公式输出(J1)。
解析:。正确答案 A。
实现要点:φ 公式 = 对每个不同质因子 r = r / i * (i - 1)。手算:质因子 2、5。
排除法:B 是 n-1;C 是 n/2;D 无依据。
关联 · 欧拉函数公式(B1):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // φ(15) = φ(3) × φ(5)(3 与 5 互质) 05 int p3 = 0, p5 = 0, p15 = 0; 06 for (int i = 1; i <= 3; i++) if (3 % i == 0 || __gcd(3, i) == 1) p3 += (__gcd(3, i) == 1); 07 for (int i = 1; i <= 5; i++) p5 += (__gcd(5, i) == 1); 08 for (int i = 1; i <= 15; i++) p15 += (__gcd(15, i) == 1); 09 cout << p3 << " " << p5 << " " << p15; 10 return 0; 11}
单选题:程序输出是?(φ(3)、φ(5)、φ(15))
考点:φ 积性验证(J2)。
解析:、、。输出 2 4 8。正确答案 A。
实现要点:互质积性 。手算:逐个统计互质数。
排除法:B/C/D 无依据。
关联 · 欧拉函数的积性(B2):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 欧拉定理:3^φ(10) ≡ 1 (mod 10),φ(10) = 4 15 cout << qpow(3, 4, 10); 16 return 0; 17}
单选题:程序输出是?
考点:欧拉定理验证(J3)。
解析:——欧拉定理 。正确答案 A。
实现要点:欧拉定理验证 = 应为 1。手算:。
排除法:B/C/D 无依据。
关联 · 欧拉定理(J 组 22 章 E4):衔接。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 3^1000 mod 10:φ(10) = 4,1000 mod 4 = 0 15 cout << qpow(3, 1000 % 4, 10); 16 return 0; 17}
单选题:程序输出是?( 时应取指数 4 → ;代码输出的是 ,恰好一致)
考点:降幂计算(J4)。
解析:,代码输出 ——与正确值 一致()。正确答案 A。
实现要点:互质降幂 = 指数对 取模;取模为 0 时指数取 (本题碰巧 )。手算:。
排除法:B/C/D 无依据。
关联 · 欧拉降幂(B5):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int phi[13] = {0}; 05 for (int i = 1; i <= 12; i++) phi[i] = i; 06 for (int i = 2; i <= 12; i++) 07 if (phi[i] == i) // i 是素数 08 for (int j = i; j <= 12; j += i) 09 phi[j] = phi[j] / i * (i - 1); 10 for (int i = 1; i <= 12; i++) cout << phi[i] << " "; 11 return 0; 12}
单选题:程序输出是?(筛法求 φ(1)~φ(12))
考点:φ 批量(J5)。
解析:筛法 φ(1..12) = 1 1 2 2 4 2 6 4 6 4 10 4。正确答案 A。
实现要点:欧拉筛法 = 每个素数给其倍数打折 phi[j] = phi[j] / i * (i - 1)。手算:按素数 2、3、5、7、11 逐轮打折。
排除法:B 是原值;C/D 无依据。
关联 · φ 公式输出(J1):批量版。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 7^100 mod 9:φ(9) = 6,100 mod 6 = 4 → 7^4 mod 9 15 cout << qpow(7, 100 % 6, 9); 16 return 0; 17}
单选题:程序输出是?(,,…直接算:)
考点:欧拉应用(J6)。
解析:, → 。正确答案 A。
实现要点:合数模降幂用欧拉定理。手算:,。
排除法:B 是 ;C/D 无依据。
关联 · 欧拉定理的应用(B6):应用代码。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int p = 7; 05 long long f = 1; 06 for (int i = 1; i <= p - 1; i++) f = f * i % p; // (p-1)! mod p 07 cout << f; 08 return 0; 09}
单选题:程序输出是?(威尔逊:)
考点:阶乘取模输出(K1)。
解析:——威尔逊 。正确答案 A。
实现要点:阶乘逐步取模防溢出。手算:。
排除法:B/C/D 无依据。
关联 · 威尔逊定理陈述(C1):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int p = 5; 05 long long f = 1; 06 for (int i = 1; i <= p - 1; i++) f = f * i % p; 07 cout << f; 08 return 0; 09}
单选题:程序输出是?()
考点:(p-1)! mod p(K2)。
解析:。正确答案 A。
实现要点:素数模的 恒为 。手算:。
排除法:B/C/D 无依据。
关联 · 威尔逊定理陈述(C1):同构题。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 11; 05 long long f = 1; 06 for (int i = 1; i <= n - 1; i++) f = f * i % n; 07 cout << (f == n - 1 ? "PRIME" : "COMPOSITE"); // (n-1)! ≡ -1 判定 08 return 0; 09}
单选题:程序输出是?
考点:威尔逊判定(K3)。
解析: → PRIME。正确答案 A。
实现要点:威尔逊判定 = 检查 是否等于 。手算:验证 。
排除法:B 是合数输出;C/D 无依据。
关联 · 威尔逊判定素数(C3):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // 计算 10! mod 11 05 int p = 11; 06 long long f = 1; 07 for (int i = 1; i <= 10; i++) f = f * i % p; 08 cout << f; 09 return 0; 10}
单选题:程序输出是?
考点:威尔逊计算(K4)。
解析:。正确答案 A。
实现要点:与 K3 同计算,直接输出余数。手算:威尔逊直接给答案。
排除法:B/C/D 无依据。
关联 · 威尔逊真题计算(C7):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int p = 7; 05 long long f = 1; 06 for (int i = 1; i <= ______; i++) f = f * i % p; // 计算 (p-1)! 07 cout << f; 08 return 0; 09}
单选题:横线处应填入?(使输出为 6)
考点:威尔逊填空(K5)。
解析:循环上界 p - 1——。正确答案 A。
实现要点:威尔逊公式的阶乘范围是 。手算:验证 6! mod 7。
排除法:B 含 p(结果 0);C/D 无依据。
关联 · 威尔逊定理陈述(C1):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 6; 05 long long f = 1; 06 for (int i = 1; i <= n - 1; i++) f = f * i % n; 07 cout << f; 08 return 0; 09}
单选题:程序输出是?(6 是合数,,不是 )
考点:合数反例(K6)。
解析:——合数模下不是 。正确答案 A。
实现要点:合数 的 通常含 的因子 → 0( 除外:)。手算:120 含因子 6。
排除法:B/C/D 无依据。
关联 · 威尔逊的逆命题(C2):反例侧。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // 计算 20! mod 23(23 是素数) 05 int p = 23; 06 long long f = 1; 07 for (int i = 1; i <= 20; i++) f = f * i % p; 08 cout << f; 09 return 0; 10}
单选题:程序输出是?(威尔逊:,,,故 )
考点:阶乘模应用(K7)。
解析:(,,)。正确答案 A。
实现要点:用威尔逊反推部分阶乘——。手算:逆元 。
排除法:B 是 -1;C/D 无依据。
关联 · 威尔逊的应用(C4):应用代码。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 2^1000000 mod 7:φ(7) = 6,1000000 mod 6 = 4 15 cout << qpow(2, 1000000 % 6, 7); 16 return 0; 17}
单选题:程序输出是?()
考点:大指数降幂(L1)。
解析: → 。正确答案 A。
实现要点:大指数先对 取模再快速幂。手算:。
排除法:B 是 ;C/D 无依据。
关联 · 大指数处理(F5):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int r = 1; 05 for (int i = 1; i <= 6; i++) { // 2^k mod 7 的循环节 06 r = r * 2 % 7; 07 cout << r << " "; 08 } 09 return 0; 10}
单选题:程序输出是?
考点:循环节输出(L2)。
解析::2、4、1 循环(周期 3 整除 6)。输出 2 4 1 2 4 1。正确答案 A。
实现要点:互质模幂必有循环节、周期整除 。手算:逐次乘 2 取模。
排除法:B/C/D 无依据。
关联 · 指数循环节(F2):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 5^100 mod 12:φ(12) = 4,100 mod 4 = 0 → 5^4 ≡ 1(注意指数为 0 时取 4) 15 cout << qpow(5, 4, 12); 16 return 0; 17}
单选题:程序输出是?(,)
考点:降幂公式应用(L3)。
解析: → 。正确答案 A。
实现要点:指数取模为 0 时取 本身。手算:。
排除法:B/C/D 无依据。
关联 · 欧拉降幂(B5):应用代码。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // φ(10) = 4 05 int exp = 2026 % 4; 06 if (exp == 0) exp = 4; // 指数取模为 0 时取 φ(m) 本身 07 cout << exp; 08 return 0; 09}
单选题:程序输出是?(2026 = 4 × 506 + 2,余数 2 不为 0,直接输出)
考点:指数取模(L4)。
解析:(不为 0)→ 输出 2。正确答案 A。
实现要点:降幂时指数取模为 0 才替换为 ——不为 0 直接用余数。手算:。
排除法:B 是替换后的值;C/D 无依据。
关联 · 降幂计算(J4):规则细节。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 7^2026 mod 10:φ(10) = 4,2026 mod 4 = 2 15 cout << qpow(7, 2026 % 4, 10); 16 return 0; 17}
单选题:程序输出是?()
考点:模幂综合(L5)。
解析: → 。正确答案 A。
实现要点:降幂 + 快速幂组合。手算:。
排除法:B 是底数;C/D 无依据。
关联 · 模幂应用(F6):组合应用。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 3^2025 mod 7:φ(7) = 6,2025 mod 6 = 3 15 cout << qpow(3, 2025 % 6, 7); 16 return 0; 17}
单选题:程序输出是?()
考点:快速幂加降幂(L6)。
解析: → 。正确答案 A。
实现要点:与 L5 同法。手算:。
排除法:B 是底数;C/D 无依据。
关联 · 快速幂回顾(F1):组合应用。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 17; 05 bool prime = true; 06 for (int i = 2; i * i <= n; i++) 07 if (n % i == 0) prime = false; 08 cout << (prime ? "YES" : "NO"); 09 return 0; 10}
单选题:程序输出是?
考点:试除输出(M1)。
解析:17 不被 整除 → YES。正确答案 A。
实现要点:试除到 (i * i <= n)。手算:17 不是 2、3、4 的倍数。
排除法:B 是合数输出;C/D 无依据。
关联 · 试除法回顾(E1):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 int n = 97; // 97 是素数 15 cout << (qpow(2, n - 1, n) == 1 ? "MAYBE-PRIME" : "COMPOSITE"); 16 return 0; 17}
单选题:程序输出是?
考点:费马测试输出(M2)。
解析:(97 素数)→ MAYBE-PRIME。正确答案 A。
实现要点:费马测试通过只说明"可能素数"。手算:费马定理保证。
排除法:B 是合数输出;C/D 无依据。
关联 · 费马素性测试(E2):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 int n = 341; 15 cout << (qpow(2, n - 1, n) == 1 ? "MAYBE-PRIME" : "COMPOSITE"); 16 return 0; 17}
单选题:程序输出是?(341 = 11 × 31 是合数!但费马测试被骗过)
考点:伪素数 341(M3)。
解析: 但 ——费马测试输出 MAYBE-PRIME 被欺骗。正确答案 A。
实现要点:费马测试的软肋——伪素数让它误报"可能素数"。手算:验证 341 是合数。
排除法:B 无依据;C/D 无依据。
关联 · 伪素数反例(E3):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 int n = 341; 15 // Miller-Rabin:除费马检查外,还检查 x^2 ≡ 1 的非平凡平方根 16 // 341 会在二次探测环节被识破 17 cout << "COMPOSITE"; // 多轮二次探测后 341 必被识破 18 return 0; 19}
判断题:Miller-Rabin 通过二次探测识破费马测试无法识别的伪素数(如 341)——这是它比费马测试更强的关键。
考点:Miller-Rabin 思想(M4)。
解析:二次探测( 的非平凡根)识破伪素数——341 在此环节现形。✅ 正确
实现要点:MR = 费马检查 + 二次探测 + 多轮随机基。手算:理解探测环节的意义。
排除法:无(判断题)。混淆点:二次探测是相对费马的唯一增量。
关联 · Miller-Rabin 思想(E4):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 bool isp[21] = {0}; 05 for (int i = 2; i <= 20; i++) 06 if (!isp[i]) 07 for (int j = 2 * i; j <= 20; j += i) isp[j] = true; 08 int cnt = 0; 09 for (int i = 2; i <= 20; i++) if (!isp[i]) cnt++; 10 cout << cnt; 11 return 0; 12}
单选题:程序输出是?(2~20 的素数个数)
考点:素数表输出(M5)。
解析:2~20 的素数 8 个(2、3、5、7、11、13、17、19)。正确答案 A。
实现要点:埃氏筛 = 质数倍数标记。手算:列 2~20 划倍数。
排除法:B 漏 2;C/D 无依据。
关联 · 素数判定(J 组 18 章 C 组):衔接。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // 三种判定:试除 O(sqrt(n)) 确定 / 费马 O(log n) 但会被伪素数骗 / 05 // Miller-Rabin O(k log n) 概率正确(误判率极低) 06 cout << "MR-best"; 07 return 0; 08}
判断题:工程上判定大整数素性首选 Miller-Rabin——比试除快得多、比费马测试可靠得多。
考点:判定对比(M6)。
解析:工程首选 Miller-Rabin——快于试除、可靠于费马。✅ 正确
实现要点:三判定谱系:试除(慢而确定)< 费马(快而不可靠)< MR(快而可靠)。手算:复杂度对比。
排除法:无(判断题)。混淆点:MR 误判率极低但非零。
关联 · 判定方法选择(D7):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int cnt = 0; 05 for (int i = 1; i <= 12; i++) 06 if (__gcd(i, 12) == 1) cnt++; // 统计与 12 互质的数 07 cout << cnt; 08 return 0; 09}
单选题:程序输出是?(= φ(12))
考点:gcd 加 phi(N1)。
解析:与 12 互质的数 4 个(1、5、7、11)。正确答案 A。
实现要点:互质统计 = 的朴素实现。手算:逐个数 gcd。
排除法:B/C/D 无依据。
关联 · 互质与欧拉(G2):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int cnt = 0; 05 for (int i = 1; i <= 9; i++) 06 if (__gcd(i, 9) == 1) cnt++; 07 cout << cnt; 08 return 0; 09}
单选题:程序输出是?(= φ(9))
考点:互质统计(N2)。
解析:与 9 互质的数 6 个(1、2、4、5、7、8)。正确答案 A。
实现要点:与 N1 同法。手算:9 的质因子 3,排除 3、6、9。
排除法:B 是 n-1;C/D 无依据。
关联 · 欧拉函数示例(B7):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 // 100! mod 7 = 0(100! 含因子 7) 05 long long f = 1; 06 for (int i = 1; i <= 100; i++) { 07 f = f * i % 7; 08 if (f == 0) break; 09 } 10 cout << f; 11 return 0; 12}
单选题:程序输出是?
考点:阶乘取模(N3)。
解析: 时乘积含因子 7 → ,break。正确答案 A。
实现要点:()恒为 0——因子 p 出现即归零。手算:找到第一个含 p 因子的项。
排除法:B/C/D 无依据。
关联 · 阶乘取模输出(K1):大阶乘特例。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // C(5,2) mod 7:5! / (2! × 3!) = 120 / 12 = 10 ≡ 3 15 long long fact[6] = {1, 1, 2, 6, 24, 120}; 16 long long p = 7; 17 cout << fact[5] * qpow(fact[2], p - 2, p) % p * qpow(fact[3], p - 2, p) % p; 18 return 0; 19}
单选题:程序输出是?
考点:模幂加逆元(N4)。
解析:。正确答案 A。
实现要点:组合数取模 = 阶乘 + 逆元(费马)。手算:。
排除法:B 忘了取模;C/D 无依据。
关联 · 组合数取模(J 组 22 章 G2):衔接。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 2^100 + 3^100 mod 5:φ(5) = 4,100 mod 4 = 0 15 cout << (qpow(2, 4, 5) + qpow(3, 4, 5)) % 5; 16 return 0; 17}
单选题:程序输出是?(,,和 ≡ 2)
考点:综合计算(N5)。
解析:、,和 ≡ 2。正确答案 A。
实现要点:降幂 + 快速幂 + 模加法综合。手算:费马 。
排除法:B/C/D 无依据。
关联 · 降幂链(D4):综合应用。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 迷你 RSA:p=3, q=5, n=15, φ(15)=8,e=3, d=3(3×3=9≡1 mod 8) 15 // 加密 2^3 mod 15,解密 8^3 mod 15 应回到 2 16 long long c = qpow(2, 3, 15); 17 cout << qpow(c, 3, 15); 18 return 0; 19}
单选题:程序输出是?(加密再解密恢复明文)
考点:密码学演示(N6)。
解析:迷你 RSA:,——解密恢复明文。正确答案 A。
实现要点:RSA 加解密 = 模幂互逆()。手算:。
排除法:B 是密文;C/D 无依据。
关联 · 数论在密码学(G6):概念题代码化。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 int n = 97; 15 cout << (______ ? "MAYBE-PRIME" : "COMPOSITE"); // 费马测试 16 return 0; 17}
单选题:横线处应填入?(使输出为 MAYBE-PRIME)
考点:费马判定填空(O1)。
解析:qpow(2, n - 1, n) == 1。正确答案 A。
实现要点:费马测试判定式 = 是否为 1。手算:验证 97。
排除法:B 反向;C 只判奇数;D 无依据。
关联 · 费马测试代码(I5):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03int phi(int n) { 04 int r = n; 05 for (int i = 2; i * i <= n; i++) { 06 if (n % i == 0) { 07 ______; // r = r / i * (i - 1) 08 while (n % i == 0) n /= i; 09 } 10 } 11 if (n > 1) r = r / n * (n - 1); 12 return r; 13} 14int main() { 15 cout << phi(100); 16 return 0; 17}
单选题:横线处应填入?(使输出为 40)
考点:欧拉函数填空(O2)。
解析:r = r / i * (i - 1)。正确答案 A。
实现要点:先除后乘防溢出。手算:验证 φ(100) = 40。
排除法:B 漏除;C 丢因子;D 无依据。
关联 · φ 公式输出(J1):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int p = 11; 05 long long f = 1; 06 for (int i = 1; i <= p - 1; i++) f = ______; // 阶乘逐步取模 07 cout << f; 08 return 0; 09}
单选题:横线处应填入?(使输出为 10——)
考点:威尔逊填空(O3)。
解析:f * i % p——逐步取模。正确答案 A。
实现要点:阶乘每步取模防溢出。手算:验证 10! mod 11 = 10。
排除法:B 会溢出;C 是加法;D 无依据。
关联 · 阶乘取模输出(K1):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 2^100 mod 7:费马降幂,指数对 ______ 取模 15 cout << qpow(2, 100 % ______, 7); 16 return 0; 17}
单选题:横线处应填入?(使输出为 2)
考点:降幂填空(O4)。
解析:6(φ(7))。正确答案 A。
实现要点:费马降幂指数对 取模。手算:验证 。
排除法:B 对 p 取模(错);C/D 无依据。
关联 · 费马降幂(I6):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 ______; // 底数平方 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 cout << qpow(2, 10, 1000); 15 return 0; 16}
单选题:横线处应填入?(使输出为 24)
考点:快速幂填空(O5)。
解析:a = a * a % p——底数平方。正确答案 A。
实现要点:快速幂三件套 = 位判断、底数平方、右移。手算:验证 2^10 mod 1000。
排除法:B 是加法;C 取错对象;D 无依据。
关联 · 快速幂回顾(F1):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 29; 05 bool prime = true; 06 for (int i = 2; ______; i++) // 试除到 sqrt(n) 07 if (n % i == 0) prime = false; 08 cout << (prime ? "YES" : "NO"); 09 return 0; 10}
单选题:横线处应填入?(使输出为 YES)
考点:素数测试填空(O6)。
解析:i * i <= n——试除到平方根。正确答案 A。
实现要点: 等价 ,防溢出写法。手算:验证 29。
排除法:B 试除到 n;C 漏边界;D 无依据。
关联 · 试除法回顾(E1):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 20, m = 7; 05 long long f = 1; 06 for (int i = 1; i <= n; i++) f = ______; // 阶乘逐步取模 07 cout << f; 08 return 0; 09}
单选题:横线处应填入?(使输出为 0——20! 含因子 7)
考点:阶乘取模填空(O7)。
解析:f * i % m。正确答案 A。
实现要点:阶乘逐步取模——20! 含因子 7 归零。手算:验证。
排除法:B 溢出;C 加法;D 无依据。
关联 · 阶乘取模(N3):填空版。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 错误:10 是合数,"inv(3) = 3^(10-2) mod 10" 不成立 15 // 3^8 mod 10 = 1,但 3 的逆元在模 10 下是 7(3×7=21≡1) 16 cout << qpow(3, 8, 10) << " " << 7; 17 return 0; 18}
单选题:程序输出是?(费马公式给出 1,而真正的逆元是 7——公式失效)
考点:费马误用合数(P1)。
解析: 但真正逆元是 7——费马公式在合数模失效。输出 1 7。正确答案 A。
实现要点:合数模求逆元必须 exgcd。手算:。
排除法:B/C/D 无依据。
关联 · 费马误用(J 组 22 章 P2):衔接。
01#include <bits/stdc++.h> 02using namespace std; 03int main() { 04 int n = 20; 05 long long f = 1; 06 for (int i = 1; i <= n - 1; i++) f = f * i; // 错误:不取模,直接溢出 07 cout << f % n; 08 return 0; 09}
判断题:计算 不逐步取模会溢出( 已逼近 long long 上限,再大必溢出)——威尔逊判定必须每步取模。
考点:威尔逊阶乘溢出(P2)。
解析: 逼近 long long 上限,再大必溢出——必须每步取模。✅ 正确
实现要点:阶乘类计算逐步取模是纪律。手算:估算阶乘增长。
排除法:无(判断题)。混淆点:溢出静默发生、不报错。
关联 · 威尔逊的局限(C5):代价之一。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a % p; 08 a = a * a % p; 09 n >>= 1; 10 } 11 return r; 12} 13int main() { 14 // 错误:2 与 6 不互质,不能直接用"指数对 φ(6)=2 取模"的互质降幂 15 // 2^5 mod 6 的真实值是 2;但 5 mod 2 = 1 → 2^1 = 2(碰巧对) 16 // 换成 2^4 mod 6:真实值 4;4 mod 2 = 0 → 2^0 = 1(错误) 17 cout << qpow(2, 4, 6); 18 return 0; 19}
单选题:程序输出是?(真实值 ;若误用互质降幂 则错)
考点:降幂条件错(P3)。
解析:——2 与 6 不互质,互质降幂不适用(误用会得 )。正确答案 A。
实现要点:降幂前先查 ;不互质用广义降幂。手算:。
排除法:B 是误用结果;C/D 无依据。
关联 · 降幂条件(H4):错误示范。
01#include <bits/stdc++.h> 02using namespace std; 03int phi_wrong(int n) { 04 int r = n; 05 for (int i = 2; i * i <= n; i++) { 06 if (n % i == 0) { 07 r = r * (i - 1); // 错误:忘了除以 i 08 while (n % i == 0) n /= i; 09 } 10 } 11 if (n > 1) r = r * (n - 1); 12 return r; 13} 14int main() { 15 cout << phi_wrong(12); 16 return 0; 17}
单选题:程序输出是?(正确 φ(12) = 4;公式漏"除以 i"得到错误值)
考点:φ 公式错(P4)。
解析:漏"除以 i"→ (正确是 4)。正确答案 A。
实现要点:φ 公式 r = r / i * (i - 1) 的除法不可省。手算:对照正确 φ(12)=4。
排除法:B 是正确值;C/D 无依据。
关联 · 欧拉函数计算错(H3):错误示范。
01#include <bits/stdc++.h> 02using namespace std; 03long long qpow_bad(long long a, long long n, long long p) { 04 long long r = 1; 05 a %= p; 06 while (n) { 07 if (n & 1) r = r * a; // 错误:漏 % p 08 a = a * a; // 错误:漏 % p 09 n >>= 1; 10 } 11 return r % p; 12} 13int main() { 14 cout << qpow_bad(2, 30, 1000); 15 return 0; 16}
判断题:快速幂漏掉每步取模,中间值 a * a 与 r * a 会指数级膨胀、溢出 long long——最后才取模救不回来。
考点:模幂漏模(P5)。
解析:漏每步取模 → a * a、r * a 指数膨胀、溢出——最后取模救不回来。✅ 正确
实现要点:快速幂每步乘法后立即取模。手算:估算 2^30 路径的中间值。
排除法:无(判断题)。混淆点:溢出是静默错误。
关联 · 模幂漏模(J 组 22 章 P4):衔接。
判断题:以下结论全部正确——"费马逆命题不成立(伪素数 341);欧拉降幂互质时指数取模 φ(m);威尔逊是充要条件但阶乘昂贵;Miller-Rabin 靠二次探测识破伪素数"。
考点:综合判断(P6)。
解析:四结论全对:费马逆命题不成立(341);欧拉降幂互质时指数取模 φ(m);威尔逊充要但阶乘昂贵;MR 靠二次探测识破伪素数。✅ 正确
实现要点:本章四大核心结论收官自查。手算:逐条对照本章代码。
排除法:无(判断题)。混淆点:三大定理的条件与方向是本卷全部数论题的根基。
关联 · 本章全部核心结论:收官综合判断题。