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次。所以,如果循環確實完成了,但是錯過了這個序列,那么一定有錯誤,知道這個序列可能有助于調試它。
總結
以上是生活随笔為你收集整理的python找数字_python:找到一个数字序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nacos单机模式使用mysql库_Na
- 下一篇: python绘图函数m_python绘图