尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

一元二次不定式求整数解

一元二次不定式求整数解
📅 发布时间:2026/8/1 9:24:03

根据初等数论(二元一次不定方程)得出来的思路

一、定理储备:

这些笔记是来自B站老师无尽沙砾讲解后做下的笔记

然后我就开始想不能用程序来设计出求不定方程的整数解

首先我想着先把最大公约数函数写出来就是gcd,然后一系列的辗转相除需要保存q1,q2,..qn,

而且x0,y0与辗转相除的n有关于是我就用n_gcd函数来计算n,写着写着意识到Qn和Pn也是要在辗转相除的过程中求出来于是就让n_gcd返回一个数组来保存 n , Qn , Pn

最后在main函数中可以先用定理2进行判断 a b c 构成的不定方程是否有整数解

这是我自己的拙见,有改进的地方可以评论,吸取一下大佬们的建议

#include<iostream> #include<algorithm> #include<vector> const int MAXN = 100; using namespace std; int gcd(int a, int b) { return (a % b == 0) ? b : gcd(b, a % b); } vector<int> n_gcd(int a, int b) { int cnt = 0; vector<int> q(MAXN); vector<int> Q(MAXN); Q[0] = 0; Q[1] = 1; vector<int> P(MAXN); P[0] = 1; vector<int>ans(3); while (a % b != 0) { q[cnt + 1] = a / b; printf("%d ", q[cnt + 1]); int tmp = a; a = b; b = tmp % b; cnt++; } cout << endl; cout << "cnt:" << cnt; P[1] = q[1]; if (cnt >= 2) { for (int i = 2; i <= cnt; i++) { P[i] = q[i]*P[i - 1] + P[i - 2]; cout << "P:" << P[i] << endl; Q[i] = q[i]*Q[i - 1] + Q[i - 2]; cout << "Q:" << Q[i] << endl; } } ans[0] = cnt; ans[1] = Q[cnt]; ans[2] = P[cnt]; return ans; } int main() { int a, b, c; cin >> a >> b >> c; int gcd_ab = gcd(a, b); if (c % gcd_ab != 0) { printf("无正整数解\n"); return 0; } int a1 = a / gcd_ab; int b1 = b / gcd_ab; vector<int> nqp = n_gcd(a1, b1); cout << "nqp:" << nqp[0] << " " << nqp[1] << " " << nqp[2] << endl; //int x0 = ((-1) ^ (nqp[0]-1))*nqp[1]; //int y0 = ((-1) ^ (nqp[0])) * nqp[2]; int x0, y0; if (nqp[0] % 2 == 0) { x0 = -nqp[1]; y0 = nqp[2]; } else { x0 = nqp[1]; y0 = -nqp[2]; } cout << "x0: " << x0 << endl; cout << "y0: " << y0 << endl; int x1 = x0 * c / gcd_ab; int y1 = y0 * c / gcd_ab; printf("ax + by = c 的特解为:x0 = %d y0 = %d\n", x1, y1); printf("ax + by = c 的通解为:\nx = %d - %dt\ny = %d + %dt\nax + by = c 的正整数解为:\n", x1, b1, y1, a1); int cnt = 1; for (int i = -1e6; i <= 1e6; i++) { if (x1 - b1 * i > 0 && y1 + a1 * i > 0) { printf("x%d = %d,y%d = %d\n", cnt, x1 - b1 * i, cnt, y1 + a1 * i); } } return 0; }

相关新闻

  • Kylin CPU core
  • Claude注册安装与免费使用opus4.8模型完整指南
  • 2026年广州回收空调服务商参考指南:如何甄选靠谱合作伙伴? - 优质品牌商家

最新新闻

  • 5步轻松搭建你的免费音乐聚合中心:告别VIP限制的全新方案
  • 二极管整流电路全解析:从原理图到实战设计与故障排查
  • ppInk:完全免费的Windows屏幕标注神器,让演示教学更生动
  • 2026年沧州无缝弯头正规合作厂家选购指引 - 奔跑123
  • 聚龙汇刘睿在佛山产业投资会上拆解盈利逻辑
  • 2026实验室咨询公司怎么选?重点考察资质、行业经验与售后服务 - 商业新知

日新闻

  • ClickHouse版本管理深度实战:4步构建零风险升级与回滚体系
  • Java 23 种设计模式:从踩坑到精通 | 番外:责任链模式 —— 物流审批流程实战
  • 华硕笔记本性能解放指南:G-Helper轻量级控制工具全面解析

周新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

月新闻

  • ClickHouse版本管理深度实战:4步构建零风险升级与回滚体系
  • Java 23 种设计模式:从踩坑到精通 | 番外:责任链模式 —— 物流审批流程实战
  • 华硕笔记本性能解放指南:G-Helper轻量级控制工具全面解析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号