news 2026/5/12 4:51:53

关于雷劈数的一些研究

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
关于雷劈数的一些研究

一、雷劈数的定义

背景:有个数学家走在路上看见一个 3025 的路牌被劈成 30 和 25 了,他发现

(

30

+

25

)

2

=

3025

,因此称这种数为雷劈数。

比较小的雷劈数有

81

=

(

8

+

1

)

2

,

100

=

(

10

+

0

)

2

雷劈数的定义大概为:将数

N

的十进制表示从某处分成两半

a

b

b

可以包含前导

0

,但不能为空),那么

(

a

+

b

)

2

=

N

二、雷劈数的求法

因为

b

可以包含前导

0

,所以考虑直接枚举

b

的位数

n

。这个时候十进制拼接就可以表示为

10

n

a

+

b

于是我们的方程变成了这样:

(

a

+

b

)

2

=

10

n

a

+

b

展开移项:

a

2

+

2

a

b

+

b

2

10

n

a

b

=

0

a

2

+

(

2

b

10

n

)

a

+

b

2

b

=

0

这是一个关于

a

的二次方程,想要有整数解必须满足判别式

Δ

=

(

2

b

10

n

)

2

4

(

b

2

b

)

为完全平方数,设为

c

2

因此

4

b

2

4

10

n

b

+

10

2

n

4

b

2

+

4

b

=

c

2

,即

4

(

10

n

1

)

b

=

10

2

n

c

2

b

也要是整数,因此

10

2

n

c

2

需要是

4

(

10

n

1

)

的倍数。我们只需要找出符合这个条件的

c

即可。

首先显然

10

2

n

4

的倍数,因此

c

只要是偶数就可以满足

4

的条件,我们之后再带上这个偶数的条件。现在去掉

4

之后,我们就需要找出

c

2

10

2

n

1

(

mod

10

n

1

)

,因为

10

n

1

(

mod

10

n

1

)

首先

P

=

10

n

1

显然不是一个质数,我们先考虑将其质因数分解为

i

p

a

i

i

。如果我们对于所有的

p

a

i

i

求出它们的合法解,那么将所有的可能组合全都用 exCRT 合并起来就可以获得

P

的所有合法解。

现在问题变成求

c

2

1

(

mod

p

a

i

i

)

。注意这不是一般的二次剩余问题,因为我们寻找的数的平方是

1

显然的,这种情况下

c

只能为

1

p

a

i

i

1

,把

1

移到

c

2

处然后因式分解即可证明。

于是我们求出了所有合法的

c

。如果遇到了奇数跳过即可。

对于每一个

c

,其有唯一对应的两组对偶解:

b

=

10

2

n

c

2

4

(

10

n

1

)

,

a

=

10

n

±

c

2

b

容易发现满足上面条件的

c

所对应的

a

b

一定合法。

于是整个问题就解决了,回顾一遍整体的流程:

枚举

b

的位数

n

P

=

10

n

1

分解为

k

i

=

1

p

a

i

i

对于每一个

p

a

i

i

的两种选法,将它们任意组合,形成

2

k

种不同的解,每一种都用 exCRT 合并得到对应的

c

在合法的

c

中加上

P

+

1

,然后枚举所有的

c

判断是否是偶数;

对前几步得到的每一个偶数

c

都还原出对应的两组

a

,

b

最后将得到的所有

(

a

+

b

)

2

从小到大排序。

实现有点困难,因为我带着高精度写的所以写了 17KB,目前 15 秒能算出

10

50

以内所有雷劈数。代码就不给了(

upd: 拿 python 重写了一下,只有不到 2kb 而且 0.5 秒能算

10

60

,我回去加一下优化的高精度库应该还能加速,Code

实际上现在瓶颈在于质因数分解,在目前能够快速分解的范围内(对应到输入就是 65 位左右)基本都能一秒跑完了,所以可能也就这样了吧。其它的加速就又回归到了质因数分解而这并不是我想研究的部分,如果有人会更快速的分解

10

n

1

也可以在此基础上进行优化。

特别鸣谢:

liqingyang,刷视频的时候看到了这个问题;

Grammar__hbw,把倍数关系转化为了剩余问题;

zhouyuhang,提出了剩余问题的大体解决方案;

OEIS A102766,验证了程序的较小项的正确性;

我自己,写+调了一晚上的史山;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 21:31:26

14、优化 Windows 媒体体验:全方位定制指南

优化 Windows 媒体体验:全方位定制指南 在使用 Windows 系统时,Windows Media Player 和 Windows Media Center 为我们提供了丰富的媒体播放和管理功能。通过对它们进行定制,我们可以让媒体体验更加个性化和高效。下面就来详细介绍如何对它们进行定制。 调整 Windows Medi…

作者头像 李华
网站建设 2026/5/6 4:23:08

拒绝丢帧:万字解构安防监控设备的“零拷贝”软核架构

第一章:内存战争——别让带宽扼住了你的喉咙做安防监控的嵌入式开发,很多人有个误区:觉得CPU占用率低就是系统健康。大错特错。在海思、安霸或者瑞芯微这些SoC平台上,把你搞死的往往不是CPU算力不够,而是DDR带宽被打爆…

作者头像 李华
网站建设 2026/5/10 22:48:27

BabylonJS开发:从入门到精通

目录 第一章:启航!三维世界的入场券 1.1 WebGL与BabylonJS:你的浏览器里藏着一个宇宙 3D图形学极简史:从三角形到元宇宙 BabylonJS的“超能力清单”:为什么选它? 环境搭建:Node.js、TypeScr…

作者头像 李华
网站建设 2026/5/9 22:57:30

Vite 现代前端构建工具深度解析

Vite 现代前端构建工具深度解析 极速的前端构建体验 ⚡ 引言 在前端开发领域,构建工具的选择直接影响着开发效率和项目性能。Vite 作为一款现代前端构建工具,凭借其极速的冷启动、按需编译和优化的热更新,正在成为越来越多前端开发者的首选。…

作者头像 李华
网站建设 2026/5/2 10:33:31

【Java毕设源码分享】基于springboot+vue的研究生志愿填报辅助系统设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/10 14:07:40

论文写作全流程自动化:5个阶段的高效工具链构建

我的论文写作转型之路作为一名刚刚完成毕业论文的硕士研究生,我还记得最初面对论文时的茫然。开题报告反复修改,文献综述重写了三次,格式调整耗费了整整一周。直到我系统性地构建了自己的智能写作工具链,整个写作过程才变得可控和…

作者头像 李华