当前位置: 首页 > news >正文

一元二次不定式求整数解

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

一、定理储备:

这些笔记是来自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; }
http://www.jsqmd.com/news/1305984/

相关文章:

  • Unity UIBuilder可视化UI开发:从界面搭建到脚本交互全流程
  • 硬盘损坏 数据打不开不要慌
  • MIT 6.S081 Lab 7:xv6内核多线程与同步原语实现详解
  • CRC-16 CCITT校验算法详解:原理、实现与嵌入式通信实战
  • 2026年PE保护膜厂家推荐排行榜,蓝色防静电PE膜,透明防水pe保护膜,耐高温防刮花pet保护膜源头厂商推荐! - 优企名品
  • XUnity.AutoTranslator终极指南:3分钟实现Unity游戏实时汉化
  • 【AI副业品牌溢价密码】:为什么同样用ChatGPT接单,有人客单价翻5倍?——头部17位AI服务商的品牌资产拆解报告
  • 本体论从入门到实战-13.本体构建者的实战指南-通用本体
  • 旺苍县房屋漏水渗水维修实用建议,专业公司现场检测,精准定位漏点再施工 - 同城资讯
  • 2026年必看!成都资深人士力荐的那些宝藏GEO公司究竟啥样? - 企业推荐官
  • Matlab文件类型全解析:从.m/.mlx到.mat/.fig/.p,掌握高效工作流
  • DAG图、拓扑排序与关键路径:解析依赖关系与项目管理的算法核心
  • Kylin CPU core
  • 2026宝鸡家装深度解析:整家定制选型逻辑与主流品牌对比 - 国麟测评
  • AI智能PPT工具Paperxie:学术演示的高效解决方案
  • Xbox 首席执行官夏尔马:2027 财年让 Xbox 在玩家数量和营收上实现增长!
  • 基于鸿蒙OS开发打飞机小游戏(20)-麻痹锁定技能
  • 防水试验箱(IP 淋雨试验箱)厂家推荐 - 资讯分享168
  • Claude注册安装与免费使用opus4.8模型完整指南
  • 从零部署本地水彩AI绘画系统:RTX 4090实测12秒/幅,含Color Gamut校准与CMYK输出链
  • 2026年广州回收空调服务商参考指南:如何甄选靠谱合作伙伴? - 优质品牌商家
  • Codex实战:个人Demo很香,团队协作为何翻车?
  • 【MDX】 Markdown 和 JSX 融合
  • T1-实现mnist手写数字识别
  • HMC998A,DC~22GHz 2W 超宽带功率放大器
  • PID控制器在循迹小车中的原理、调试与应用实战
  • Python爬虫IP封禁解决方案与代理池实战
  • 2026 年 8 月桂林非急救医疗转运行业发展解析及合规企业服务实录 - 平台推荐官
  • 单仁牛商玄琨GEO:AI搜索获客系统实战落地的技术指南 - 汇聚至此
  • 5分钟快速上手:猫抓浏览器扩展终极使用指南