解决33问题──将33写成3个整数的立方和
这篇文章内容翻译自论文 Cracking the problem with 33,论文研究了方程 在一些小的
值的解,并首次将33写成了3个整数的立方和。完成中文可以查看项目 qiwihui/cracking-the-problem-with-33。截止到目前,100以内的自然数就剩下42还没有找到关于立方和的整数解了!
Answer to the Ultimate Question of Life, the Universe, and Everything. -- 42
以下是论文正文翻译:
解决33问题
作者:ANDREW R. BOOKER
摘要 受到Tim Browning和Brady Haran的 Numberphile 视频"未解决的33问题"的启发, 我们研究了方程 在一些小的
值的解。 我们找到了
的第一个已知解。
1. 简介
令 为正整数,其中
。 然后Heath-Brown [HB92] 推测 有无限多的三元组
满足
早在1954年就开始对(1)进行各种数值研究 [MW55];请参阅 [BPTYJ07],了解截至2000年的这些研究的历史。 自那时起进行的计算由于Elkies [Elk00] 而被算法所主导。我们所知道的最新内容是Huisman [Hui16] 的论文, 该论文确定了(1)的所有解,其中 且
。 特别是,Huisman报告说除了13个
的值以外的所有解决方案都是已知的:
Elkies的算法通过使用格基减少(lattice basis reduction)在Fermat曲线 附近寻找有理点来工作;它非常适合同时找到许多
值的解。 在本文中,我们描述了一种在k值确定时更有效的不同方法。 它的优点是可以找到所有具有 最小 坐标界限的解,而不是Elkies算法中的最大坐标。 这总是产生搜索范围的非平凡的扩张(nontrivial expansion),因为除了可以单独考虑的有限多个例外之外,还有
此外,根据经验,通常情况是其中一个变量比其他变量小得多,因此我们希望实际上增益更大。
我们的策略类似于一些早期的方法(特别参见 [HBLtR93],[Bre95],[KTS97] 和 [BPTYJ07]), 并且基于观察: 的任何解都具有
作为一个因子。 相对于早期研究,我们的主要贡献是注意到,通过一些时间空间权衡,运行时间在高度边界内非常接近线性, 并且在现代64位计算机上实现时非常实用。
更详细地说,假设 是(1)的解,并且不失一般性,假设
。 然后我们有
如果 则
,并且
的每个值都产生一个解。 否则,设
, 我们看到
可以除
并且
得到
因此,给定 的候选值,通过遍历
的所有除数, 有一个有效的程序来查找
和
的所有相应值。 这个基本算法在假设整数分解的时间复杂度的标准启发式(standard heuristics)下,已经能在 时间
内找到满足
的所有解。 在下一节中,我们将解释如何避免因子分解并更有效地实现相同目的。
感谢 感谢Roger Heath-Brown提供了有用的意见和建议。
2. 方法
为了便于表示,我们假设 ;请注意,这适用于(2)中的所有
。 由于上述基本算法对于寻找小解是合理的,因此我们将假设
。 此外,如果我们将(1)专门用于
的解,那么我们得到Thue方程
,这是有效可解的。 使用 PARI/GP [The18] 中的Thue求解器,我们验证了(2)中的
不存在这样的解。 因此,我们可以进一步假设
。
由于 ,我们有
同样,因为 和
, 我们有
。 将(1)的两边乘以
,我们得到
令 ,并且
。 如果
则
由于 , 这与我们的假设不相容,即
和
。 因此我们必然有
。
接下来,减少(4)模3并回想我们的假设 ,我们有
设 使得
。 然后,由于每个立方数都与
或
相等, 我们必然有
, 因此
。 基于(3),当且仅当
以及
是平方数时, 我们得到(1)的解。
总之,找到(1)的所有解并且满足 ,
和
,对于每个与3互质的
, 解决以下系统就足够了:
我们解决这个问题的方法很简单:我们通过它们的主要因子分解递归地计算 的值, 并应用中国剩余定理来将
的解减少到素数模幂的情况下, 其中标准算法可以适用。设
表示
模
的立方根数。通过标准分析估计,由于
不是立方数,我们有
启发式地,计算对所有素数 的
的解 可以用
上的整数在
算术运算来完成; 见例如 [[NZM91],§2.9,练习8]中描述的算法。假设这一点,可以看出, 使用Montgomery的批量反转技巧[[Mon87],§10.3.1],计算对所有正整数
的
的根的剩余工作可以再次用
算术运算完成。
因此,我们可以在线性时间内计算满足(5)的第一行的所有 , 作为算术进展(arithmetic progressions)的并集。为了检测最后一行的解,有一个快速的方法来确定
是一个平方数 至关重要。我们首先注意到对于固定
,这种情况减少到在椭圆曲线上找到积分点; 特别是,令
和
,从(3)中我们看到(X,Y)位于Mordell曲线上
因此,对于固定 ,存在至多有限多个解,并且它们可以被有效地约束。 对于
的一些小值,找到(6)上的所有积分点并检查是否产生任何满足(1)的解是切实可行的。 例如,使用Magma[[BCFS18],§128.2.8]中的积分点函数(functionality), 我们验证了如(2)中的
和
情况下没有解, 除了
。
接下来我们自然注意到一些同余和可分性约束:
引理 设 为(5)的解,设
为素数, 设
,
。则
(i) ; (ii) 如果
则
; (iii) 如果
则
; (iv) 如果
则
。
证明 令 , 令
,我们有
, 观察到
,模27,我们有
这消失了模9,所以为了使 成为平方数,它也必须消除mod 27。 于是
减少(1)模2我们得到 ,这得到(i)。
接下来设 和
,这样就有
如果 则
, 但是当
时这是不可能的,因为
不是
的平方模。 因此,在这种情况下我们必须
。
接下来假设 。 我们考虑以下情况,涵盖所有可能性:
- 若
则
,那么
。
- 若
且
, 则
,那么
。
- 若
则
。
- 如果
且
则
,这是不可能的。
因此,在任何情况我们得出结论 。
最后,假设 和
。如果
则无需证明的,所以假设不然。 由于
,我们必须有
,因为
通过部分(iii)得出 , 因此
。
因此,一旦 的残差类(residue class)固定, 则其残差模
是确定的。还要注意,条件(ii)和(iii)对于测试
是有效的。
然而,即使有这些优化,也有 对
满足(5)的第一行和引理的结论(i)和(iv)。 因此,为了实现比
更好的运行时间,需要从一开始就消除一些
值。 我们通过标准的时间空间交换来实现这一目标。确切地说,设置
, 并且让
是区间
之间的素数的乘积。 根据素数定理,我们得到
。如果
是平方数, 那么对于任意素数
我们有
其中 。 当
时, 我们首先为每个残差类
计算该函数, 并且仅选择对于每个
满足(7)的那些残基。 由Hasse约束,允许的残差的数量最多为
因此,要考虑的 值的总数最多为
对于没有以这种方式消除的 ,我们遵循类似的策略, 其中一些其他辅助模
由较大的素数组成,以加速平方测试。 我们预先计算模为
的立方数表和Legendre符号模
, 因此将测试(7)简化为了表查找。只有当所有这些测试都通过时, 我们才能在多精度算术中计算
并应用一般的平方检验,这种情况对于一小部分候选值来说都是如此。 事实上,我们期望Legendre测试的数量平均有限,所以总的来说, 找到所有解决方案的
应该要求不超过
次表查找和对
中整数的算术运算。
因此,当 符合机器字大小时,我们预计运行时间几乎是线性的,这就是我们在实践中观察到的
。
3. 实现
我们在C中实现了上述算法,其中有一些内联汇编程序来源于由Ben Buhrow [Buh19] 编写的Montgomery算法 [Mon85], 以及Kim Walisch的用于枚举素数的 primesieve 库 [Wal19]。
该算法自然地在具有超过 的素因子和 具有
-平滑的素数的
的值之间分配。 前一组
消耗超过运行时间的三分之二,但更容易并行化。 我们在布里斯托大学高级计算研究中心的大规模并行集群Bluecrystal Phase 3上运行了这一部分。 对于平滑的
,我们使用了一个单独的32核和64核节点的小集群。
我们搜索了满足 和
的(1)的解,找到了以下结果:
总计算在三个星期的实际时间中大约使用了15个核年。
参考文献
(略)
School of Mathematics, University of Bristol, University Walk, Bristol, BS8 1TW, United Kingdom
E-mail address: andrew.booker@bristol.ac.uk
博客参考:
- 人类第一次将33写成了3个整数的立方和
转载于:https://juejin.im/post/5caeb759e51d456e7a303b5b
解决33问题──将33写成3个整数的立方和相关推荐
- 人类第一次将42写成3个整数的立方和,最后一个100以内的自然数告破
允中 发自 凹非寺 量子位 报道 | 公众号 QbitAI 现在,42也被攻破了. 它可以被写成3个整数的立方之和,这是100以内自然数的最后一个"彩蛋". 荣誉属于麻省理工的A ...
- 42 可写成成三个整数的立方和
42,可写成三个整数的立方和!这是数学界的一大突破. 由布里斯托大学的 Andrew Booker 和来自麻省理工学院的Andrew Sutherland共同发现, 他们以"生命.宇宙以及一 ...
- Oracle中使用Table()函数解决For循环中不写成 in (l_idlist)形式的问题
在实际PL/SQL编程中,我们要对动态取出来的一组数据,进行For循环处理,其基本程序逻辑为: create or replace procedure getidlist isl_idlist var ...
- rfid3-micro2440,linux2.6.32.2,写成misc驱动
接上文的进度,将keil下已经成功的读卡程序写成linux驱动的形式 采用misc来写比较方便简单,仅是为了方便测试,好多都在驱动中实现. 主文件是rfid.c #include "rc52 ...
- mysql 列名能不能写成col1、col2_Mysql 寒假刷题TIPs
##mysql数据库事务### 数据库事务(简称:事务)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元. 1. 主键 超键 候选键 外键 主 键:数据库表中对储存数据对象予以唯 ...
- Python爬虫小实践:寻找失踪人口,爬取失踪儿童信息并写成csv文件,方便存入数据库...
前两天有人私信我,让我爬这个网站,http://bbs.baobeihuijia.com/f...上的失踪儿童信息,准备根据失踪儿童的失踪时的地理位置来更好的寻找失踪儿童,这种事情本就应该义不容辞,如 ...
- php dump utfp,php pchart乱码-使用REST接口获取GeoServer中的...-结合 thinkPHP 分页写成自己分页类_169IT.COM...
本页文章导读: ▪php pchart乱码 有俩种情况:①:未将中文字符编码格式修改成utf-8 (例子如下:)mb_convert_encoding($data, "html-e ...
- 自然数分解:任何一个自然数m的立方均可写成m个连续奇数之和。编程实现:输入一自然数 n,求组成 n3的 n个连续奇数。
标题 自然数分解 类别 流程控制 时间限制 2S 内存限制 1000Kb 问题描述 任何一个自然数m的立方均可写成m个连续奇数之和.例如: 13=1 23=3+5 33=7+9+11 43=13+15 ...
- 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。 例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19
题目描述: 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和. 例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 输入描述: 输入一个int ...
最新文章
- 深入浅出Powershell——拷贝GAC中dll文件
- android 之自定义适配器(重写的getView()方法中convertView元素的妙用)一个实例
- 【文本描述增强】标准屏幕字段文本描述更改增强
- Python树莓派编程1.2 探索树莓派
- Linux网络编程服务器模型选择之IO复用循环并发服务器
- oracle中v$database视图详解
- 【MATLAB】 csvwrite数据缺失怎么办
- 剑指 Offer II 106. 二分图
- 微服务模式下API测试
- IDES SAP SEM 4.0/SAP BW 3.50 笔记本安装手册
- 何川L3管理课_模块5_给评价
- 电力系统中的Kron简化(Kron Reduction)
- WPF实现半圆形导航菜单
- 铲雪车 骑马修栅栏 (欧拉路径和欧拉回路)
- speedoffice(Excel)表格中输入身份证号码显示不全怎么解决?
- 十代服务器芯片组,Intel自曝400、495系列芯片组:搭档十代酷睿
- linux docker 软路由,OpenWrt软路由使用docker安装jellyfin影音中心
- 南京标志设计-logo商标设计-企业VI形象识别系统
- 得到app文稿导出_得到-app分析
- 【UEFI实战】HII之配置
热门文章
- php es中文分词,Elasticsearch搜索中文分词优化
- 记一次解决Intel 9462无线网卡的笔记本安装Ubuntu16.04后无法连接WIFI问题的艰难历程
- Pixhawk6c编译
- Adobe Illustrator导出SVG的设置方法
- 安卓混淆java代码_Android R8代码混淆
- Matlab/simulink仿真,直驱永磁风机并网chopper低电压穿越,版本matlab2018a
- 揭开ESP8266神秘的面纱
- Linux 资源清理
- 浪子心声-难分真与假人面多险诈
- 洛谷 P2534 [AHOI2012]铁盘整理