python找数字_python:找到一个数字序列

我会尝试用一种不那么暴力的方法来解决这个问题。

先做一些思想实验。其他每个数字都有相同的因子2。对于剩下的8或9,您需要更多的因素。例如,你可以有一个系数3,对其中一些人来说很常见。然后是另一个因素,等等,例如:

2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2

* 3 * * 3 * * 3 * * 3 * * 3 * * 3

* * * 5 * * * * 5 * * * * 5 * * *

^ ^ ^ ^

所以现在以更系统的方式来做这个。考虑所有小于17的主要因素。尝试这些值的每个组合,并针对每个组合,尝试每个可能的偏移(但仅限于序列中至少出现2次的偏移)。看看哪一个会导致每个数字至少有一个合作伙伴。然后使用

Chinese remainder theorem

.

实际上只有两个候选人:

2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2

3 * * 3 * * 3 * * 3 * * 3 * * 3 *

* 5 * * * * 5 * * * * 5 * * * * 5

7 * * * * * * 7 * * * * * * 7 * *

* * * * * 11 * * * * * * * * * * 11

13 * * * * * * * * * * * * 13 * * *

以第一个数字为特征

X

满足这些限制:

X

模式2=0

X

模式3=0

X

模式5=4

X

模式7=0

X

模式11=6

X

模式13=0

_

X

型号30030=2184

(使用sage函数计算

crt

)以及上面的镜像

2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2

* 3 * * 3 * * 3 * * 3 * * 3 * * 3

5 * * * * 5 * * * * 5 * * * * 5 *

* * 7 * * * * * * 7 * * * * * * 7

11 * * * * * * * * * * 11 * * * * *

* * * 13 * * * * * * * * * * * * 13

特点是

模式2=0

模式3=1

模式5=0

模式7=5

模式11=0

型号13=10

_

型号30030=7810

哪个更大,所以2184_2200是第一个满足您要求的序列:

2184=2个

3713个

2185=5___ 19___ 23

2186=21093

2187=3个

7

2188=2

___

2189=11199

2190=2___ 3___ 5___ 73

2191=7313

2192=2

4

_ _ 137

2193=31743

2194=2_ _ 1097

2195=5439

2196=2个

___

_ _ 61

2197=13岁

2198=27157

2199=3____

2200=2个

5个

11个

哪个

应该

在你的循环范围内。实际上,它应该足以循环到30030次,而素数的乘积则可以达到17次。所以,如果循环确实完成了,但是错过了这个序列,那么一定有错误,知道这个序列可能有助于调试它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值