explore-diophantine-equations
について
このスキルは、線形方程式、ペル方程式、ピタゴラス数を含むディオファントス方程式(整数解)を開発者が解くことを支援します。解の存在判定、最小解の発見、およびパラメータ表示を提供します。数論問題、アルゴリズム設計、あるいは数理プログラミングにおける整数制約を扱う際にご利用ください。
クイックインストール
Claude Code
推奨npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/explore-diophantine-equationsこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
name: explore-diophantine-equations description: > 探索丢番图方程:线性丢番图方程(扩展 Euclid 算法)、Pell 方程 (连分数法)、勾股方程(参数化解)和高次方程(Fermat 大定理及 相关结果)。涵盖可解性判定、解的参数化和求最小正整数解。 license: MIT allowed-tools: Read Grep Glob WebFetch WebSearch metadata: author: Philipp Thoss version: "1.0" domain: number-theory complexity: intermediate language: natural tags: number-theory, diophantine-equations, pell-equation, pythagorean-triples, fermat locale: zh-CN source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16
探索丢番图方程
系统求解要求整数解的丢番图方程,涵盖线性方程、Pell 方程、勾股方程和高次方程。
适用场景
- 求解线性丢番图方程 ax + by = c 的整数解
- 使用连分数法求解 Pell 方程 x^2 - Dy^2 = 1
- 生成和分析勾股数组 (a, b, c) 满足 a^2 + b^2 = c^2
- 分析高次丢番图方程的可解性
- 将实际问题转化为丢番图方程
输入
- 必需:丢番图方程的陈述
- 可选:解的约束(正整数、非负整数、某范围内)
- 可选:是否需要所有解的参数化或仅特定解
- 可选:应用上下文
步骤
第 1 步:分类方程并判定可解性
确定方程类型和解的存在性:
- 线性丢番图方程 ax + by = c:
- 有解当且仅当 gcd(a, b) | c
- 如果有解,则有无穷多解
- Pell 方程 x^2 - Dy^2 = 1(D 为非完全平方正整数):
- 总是有非平凡解
- 最小正解可通过 sqrt(D) 的连分数展开求得
- 负 Pell 方程 x^2 - Dy^2 = -1:
- 不一定有解——取决于 D 的性质
- 有解当且仅当 sqrt(D) 的连分数周期长度为奇数
- 勾股方程 x^2 + y^2 = z^2:
- 所有本原解(gcd(x,y,z) = 1)由参数化给出
- Fermat 方程 x^n + y^n = z^n(n ≥ 3):
- 无正整数解(Fermat 大定理,Wiles 1995 年证明)
- 一般二次丢番图方程:可使用 Hasse-Minkowski 定理等工具分析。
预期结果: 方程已分类,可解性条件已确定或证明无解。
失败处理: 如果方程不属于标准类型,尝试通过变量替换或模运算论证将其转化为已知类型。模运算是证明无解的强大工具。
第 2 步:求解方程
根据方程类型求解:
- 线性丢番图方程:
- 使用扩展 Euclid 算法找 ax + by = gcd(a,b) 的特解 (x_0, y_0)
- 缩放得到 ax + by = c 的特解:x_0' = x_0 * c/gcd(a,b)
- 通解:x = x_0' + (b/d)t, y = y_0' - (a/d)t,t 为任意整数
- 对于正整数解,求 t 的范围使 x > 0 且 y > 0
- Pell 方程:
- 计算 sqrt(D) 的连分数展开 [a_0; a_1, a_2, ..., a_k, ...]
- 找到周期长度 k
- 如果 k 为偶数,第 k-1 个渐近分数 p_(k-1)/q_(k-1) 给出最小解
- 如果 k 为奇数,第 2k-1 个渐近分数给出最小解
- 所有解由递推生成:(x_(n+1), y_(n+1)) = (x_1 * x_n + D * y_1 * y_n, x_1 * y_n + y_1 * x_n)
- 勾股数组:
- 本原勾股数组参数化:对互素的 m > n > 0(一奇一偶)
- a = m^2 - n^2, b = 2mn, c = m^2 + n^2
- 一般勾股数组为本原数组的倍数
预期结果: 方程的特解和通解(或参数化),正整数解的范围(如有约束)。
失败处理: 如果连分数计算错误,通过代入 x^2 - Dy^2 验证候选解。连分数的每一步都应验证。
第 3 步:验证和分析解
确认解的正确性并进行进一步分析:
- 代入验证:将求得的解代入原方程确认等式成立。
- 完整性检查:
- 对于线性方程,验证通解公式生成的解确实覆盖所有解
- 对于 Pell 方程,验证递推关系正确生成后续解
- 最小解:确认找到的是最小正解(对 Pell 方程尤其重要)。
- 解的性质分析:
- 解的增长率(Pell 方程的解呈指数增长)
- 解的模式和规律
- 应用解释:将数学解翻译回原始问题的语境。
预期结果: 所有解经验证正确,解的结构(通解公式或参数化)已完整描述。
失败处理: 如果验证失败,重新检查计算步骤。对于 Pell 方程,确认 D 不是完全平方数(完全平方数的 Pell 方程无正整数解)。
验证清单
- 方程类型正确分类
- 可解性条件已验证
- 所有解代入原方程验证正确
- 通解公式覆盖所有解
- 正整数解的范围正确计算(如有约束)
- Pell 方程的最小正解正确
- 勾股数组的本原性条件已检查
常见问题
- 混淆 Pell 方程的两种形式:x^2 - Dy^2 = 1 和 x^2 - Dy^2 = -1 是不同的方程,后者不一定有解。
- D 为完全平方数:当 D = k^2 时,x^2 - k^2*y^2 = (x-ky)(x+ky) = 1 只有平凡解 y = 0, x = ±1。
- 忽略线性方程的可解性条件:ax + by = c 仅在 gcd(a,b) | c 时有解。直接使用扩展 Euclid 算法而不检查此条件可能得到非整数"解"。
- 勾股数组参数化的条件:m 和 n 必须互素且一奇一偶,否则生成的不是本原数组。
- 模运算论证的方向:模运算可以证明无解(如果模某个数无解,则整体无解),但不能直接证明有解。
相关技能
analyze-prime-numbers-- 丢番图方程的可解性常依赖于素数性质solve-modular-arithmetic-- 模运算是分析丢番图方程的基本工具derive-theoretical-result-- 某些丢番图方程需要理论推导来完全解决
GitHub リポジトリ
関連スキル
llamaguard
その他LlamaGuardは、暴力やヘイトスピーチなど6つの安全性カテゴリーにおいて、LLMの入力と出力をモデレートするMetaの70-80億パラメータモデルです。94〜95%の精度を提供し、vLLM、Hugging Face、Amazon SageMakerを使用してデプロイ可能です。このスキルを使用して、AIアプリケーションにコンテンツフィルタリングと安全策を簡単に統合できます。
cost-optimization
その他このClaudeスキルは、リソースの適正サイジング、タグ付け戦略、支出分析を通じて、開発者がクラウドコストを最適化することを支援します。AWS、Azure、GCPにわたるクラウド支出の削減とコストガバナンスの実施のためのフレームワークを提供します。インフラコストの分析、リソースの適正サイジング、または予算制約への対応が必要な際にご利用ください。
quantizing-models-bitsandbytes
その他このスキルは、bitsandbytesを使用してLLMを8ビットまたは4ビット精度に量子化し、精度の低下を最小限に抑えつつ50〜75%のメモリ削減を実現します。限られたGPUメモリでより大規模なモデルを実行したり、推論を高速化するのに理想的で、INT8、NF4、FP4などのフォーマットをサポートしています。HuggingFace Transformersと統合され、QLoRAトレーニングや8ビットオプティマイザーを可能にします。
dispatching-parallel-agents
その他このClaudeスキルは、複数のエージェントを配備し、3つ以上の独立した問題を並行して調査・修正します。共有状態や依存関係がなく解決可能な、無関係な障害が発生するシナリオ向けに設計されています。中核となる機能は並列問題解決であり、効率を最大化するために独立した問題領域ごとに1つのエージェントを割り当てます。
