设为首页收藏本站

爱吱声

 找回密码
 注册
搜索
查看: 5666|回复: 9
打印 上一主题 下一主题

[科教沙龙] 小小的停留之四 幸运数

[复制链接]
  • TA的每日心情
    擦汗
    2020-3-23 00:29
  • 签到天数: 134 天

    [LV.7]分神

    跳转到指定楼层
    楼主
    发表于 2014-7-16 11:30:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    上次说到  小小的停留之三 “计算机之父” 天才的数学家冯·诺伊曼- a' M- |+ \$ I' e* |4 o2 ?
    看冯·诺伊曼的故事,他有句名言:“若人们不相信数学简单,只因他们未意识到生命之复杂。”
    8 p- m, D1 o! t! E
    2 U4 T$ ?$ o$ T+ T$ D) B他有个好朋友,据说是最好的朋友,是生于匈牙利的波兰犹太人数学家乌拉姆,这位先生曾参与曼克顿计划(核武器上有Teller-Ulam design,Teller指爱德华·泰勒)。他亦有参与研究核能推动的航天飞机。在纯数学上,遍历理论、数论、集合论和代数拓扑都有他的足迹。
    7 k+ Q  q' `, z6 p5 D* ]" b$ G+ Z/ z! a; ^' W3 P8 J
    所以我在这里要说的幸运数不是中餐馆的饼干里给你的数字,也不是买彩票开奖的数字,而是在1955年波兰数学家乌拉姆提出的一个自然数列,用类似埃拉托斯特尼筛法的算法后留下的整数集合。7 Y9 l/ v& f# A+ M7 h
      A! n, k: }5 b' {
    In number theory, a lucky number is a natural number in a set which is generated by a "sieve" similar to the Sieve of Eratosthenes that generates the primes.
    % Y. B' _, X/ @4 J& Q  M3 A! U( }/ \
    . N9 l& K5 M: v% H6 J幸运数的定义
    2 S: y' l+ N4 y9 I0 [4 e  k1 a7 ]* sFORMULA       
    ( O4 w" k0 e' Y2 Z3 g: NStart with the natural numbers. Delete every 2nd number, leaving 1 3 5 7 ...; the 2nd number remaining is 3, so delete every 3rd number, leaving 1 3 7 9 13 15 ...; now delete every 7th number, leaving 1 3 7 9 13 ...; now delete every 9th number; etc.. T! D( z. T7 x( U0 u

    " k3 E4 Q/ O6 B( N/ x# T具体一点来说说幸运数列怎么筛选出来的(喜欢数论的同学一定知道挑选素数的埃拉托斯特尼筛法,这个办法是类似的)5 b- m0 {7 `) W5 E% O8 z& H. Y
    " w# \9 f4 b) x- n9 }+ Y" @* t
    初始,从1开始的自然数列:) |, }$ Z5 T1 d6 s9 H
    Begin with a list of integers starting with 1:1 A' L4 T4 r! f! {& }9 p
    1        2        3        4        5        6        7        8        9        10        11        12        13        14        15        16        17        18        19        20        21        22        23        24        25  ……8 c6 ?/ ^( W1 X9 P: ^0 K: n

    . [/ U) q+ o1 ?/ p3 k开始删除,在这个数列里,从2开始,首先是每隔2个数字,删除第二个数字。剩下来的数字是奇数~~
    * W& Y5 c9 M1 m, I: A# y5 @/ `* W' v, V剩下的数列如下:% D3 `8 z% ]( v" z* V# d
    Every second number (all even numbers) is eliminated, leaving only the odd integers:) z# }5 ~( o( q; a
    1                3                5                7                9                11                13                15                17                19                21                23                25  ……4 \8 E1 G7 i' O+ m+ O4 N
    ; d, X: n' D1 R3 A& g
    接下来是3,每隔3个数字删除第三个。剩下的数列如下:
    - O, [* |* @; A6 F! U, l+ HThe second term in this sequence is 3. Every third number which remains in the list is eliminated:$ b# n+ N3 Y/ A/ ]
    1                3                                7                9                                13                15                                19                21                                25  ……: }+ G3 i* X1 _  G0 X$ x$ P' `

    0 {- S4 K0 [: R& ]' p现在接下来的数字是7,所以把上述数列中每第七个删除,剩下的数列是:
    # Q) n) `' W5 j1 N6 H0 M" dThe next surviving number is now 7, so every seventh number that remains is eliminated:" T# g4 ]) P$ q) Z+ O
    1                3                                7                9                                13                15                                                21                                25  ……
    9 A2 ?. q" ^6 o- O9 e
    6 m3 L5 P$ b/ t7 g" d" J接下来是9,……
    ( K& |- O1 b' E& t6 r这个过程可以一直无限继续下去,被幸运地留下来的数字就是幸运数。
    ( ]# W8 t( Z, v2 c) G8 t0 x0 n* M6 u% Z7 o, q6 s# a; j* b
    1, 3, 7, 9, 13, 15, 21, 25, 31, 33, 37, 43, 49, 51, 63, 67, 69, 73, 75, 79, 87, 93, 99, ... (sequence A000959 in OEIS).: Y& B, X6 h1 e. I: L
    在OEIS编号为A000959的数列就是Lucky numbers
    5 p3 |& x2 D! ~% j, g) a上述链接给了一个稍微长一点的幸运数列:
    ) S$ I* B0 l1 v4 R! m" q1, 3, 7, 9, 13, 15, 21, 25, 31, 33, 37, 43, 49, 51, 63, 67, 69, 73, 75, 79, 87, 93, 99, 105, 111, 115, 127, 129, 133, 135, 141, 151, 159, 163, 169, 171, 189, 193, 195, 201, 205, 211, 219, 223, 231, 235, 237, 241, 259, 261, 267, 273, 283, 285, 289, 297, 303 ……
    " N7 M4 w, H! s& r9 v* \
    / b" k+ K% {6 @) Q6 g有没有同样喜欢看数字的同学告诉我,你看了这个数列发现的是什么呢?, L0 `- A* E6 g( |4 W& [$ `# A
    ) S- U& m& k% z; E1 Q
    2 m1 G4 s2 D. b
    : b7 `" c( Z$ A2 h. [
    第一个短一点的数列,我发现,1,3,5,7的平方(1,9,25,49)都是幸运数,但9的平方81就不是,于是马上想,那么是不是只有奇素数的平方才是幸运数呢?答案是不,11的平方也不是。于是叶子的第一个猜想就在几秒里被叶子证明是错误的。
    - O2 `$ N+ l7 n# x3 j0 R$ D! P5 T! @$ T5 {# s+ z
    数论里的各种数列是数学里最容易上手理解的,不过最迷人最折磨人的也是它。著名的例子就是哥德巴赫猜想(Goldbach's conjecture)。
    0 x" T2 z. \& m9 @  U/ m幸运数的挑选过程,类似上面提到过的埃拉托斯特尼筛法挑选素数的过程,同时也和这个著名猜想有关。  R6 O2 K1 v9 K4 d0 E
    另外幸运数也曾经在正式进入书面讨论的时候被建议叫做 "the sieve of Josephus Flavius",因为它的挑选让大家想到著名的约瑟夫斯问题。1 A" r+ L' x0 W# K" n
    ' |( Q0 [& r/ K* G, o
    暂时就到这里吧,接下去要不要继续聊引出来的概念和问题呢?
    6 A( Q  M( z) q) x1 e+ |- _/ a$ b
    # y6 w; I7 [9 M( `2 U1 I/ X3 L**什么叫做Conjecture?  f2 T/ l6 o+ g5 _
    **约瑟夫斯问题。

    评分

    参与人数 9爱元 +49 收起 理由
    韦红雪 + 8
    喜欢就捧捧场 + 6 涨姿势
    独角兽 + 4 涨姿势
    Pipilu + 2 涨姿势
    农民家的狗 + 4

    查看全部评分

  • TA的每日心情
    擦汗
    2020-3-23 00:29
  • 签到天数: 134 天

    [LV.7]分神

    沙发
     楼主| 发表于 2014-7-16 21:26:40 | 只看该作者
    猜想(conjecture)和假说(Hypothesis)
    * G: |& x- v9 i4 q: H2 w* ^1 F4 [; t+ t6 t0 @" j+ z4 r
    猜想(conjecture)是一个看上去是真的,但尚未被证明的叙述。比如说上面提到的数学数列,因为它表现的没有规律和无限性,基于观察的某些结论,如果不能用科学逻辑的方法来证明在无限的未来它都是真的,那么之前所观察到的所有事实都仅仅是看上去是正确的。& t/ p! x7 i0 [  z* o: q' D
    7 h  m$ ^* w0 f# m' ?
    当猜想被证明后,它便会成为定理。猜想一日未成为定理,数学家都要小心在逻辑结构之中使用这些猜想。: N& ^% Y/ q8 ?7 u

      x$ h1 i# F' x4 z猜想主要因为类比推理和偶然发现的巧合而出现。数学家通常会使用不完全归纳法,来测试自己的猜想。例如费马曾经根据首四个费马数是素数,便猜想所有费马数都是素数(此猜想已被推翻)# C9 I. _, o; J# |" b5 |

    6 L2 I% }( J8 H( O3 a7 g假说(Hypothesis),即指按照预先设定,对某种现象进行的解释,即根据已知的科学事实和科学原理,对所研究的自然现象及其规律性提出的推测和说明,而且数据经过详细的分类、归纳与分析,得到一个暂时性但是可以被接受的解释。任何一种科学理论在未得到实验确证之前表现为假设学说或假说。9 E) T( ?( Z' f7 @& ?, Q

    ! ?6 w( d$ F- l( ^& V有的假设还没有完全被科学方法所证明,也没有被任何一种科学方法所否定,但能够产生深远的影响。如1900年德国物理学家马克斯·普朗克为解决黑体辐射谱而首先提出量子论(量子假说)。

    评分

    参与人数 1爱元 +4 收起 理由
    独角兽 + 4 涨姿势

    查看全部评分

  • TA的每日心情
    慵懒
    2018-2-25 20:16
  • 签到天数: 128 天

    [LV.7]分神

    板凳
    发表于 2014-7-16 21:58:32 | 只看该作者
    不明觉厉

    点评

    你是先入为主地封闭了自己的思考。这个数列的筛选规则,只要会数数都能看懂的吧??  发表于 2014-7-17 06:46
  • TA的每日心情
    擦汗
    2020-3-23 00:29
  • 签到天数: 134 天

    [LV.7]分神

    地板
     楼主| 发表于 2014-7-17 06:50:45 | 只看该作者
    本帖最后由 到处停留的叶子 于 2014-7-16 17:53 编辑
    , v# Q+ z+ e6 I, Y$ @( B( ~
    % @4 }$ M6 w% r) ]/ z**约瑟夫斯问题    都教授
    1 U% |0 ]. H3 _# e. f( @% Q
    + B! e4 p9 q% S3 s; A我们来聊聊约瑟夫斯问题。
    + e) `* X2 X6 N5 W7 q6 [
    1 n! \' }0 H, A4 C. N; p& R" ?有n个囚犯站成一个圆圈,准备处决。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。
    / E0 L0 m& L7 f( ^5 i7 Y( J$ u
    * `$ h( q7 k3 n问题是,给定了n和k,一开始要站在什么地方才能避免被处决?
    0 Q- V1 l; _% ^) k$ H5 u' u% D; H% S( Q' L
    % F2 |% d8 D( v! O$ d2 P0 P
    ---------------------------------------不思考的分割线---------------------------------------------; N" X7 d/ @3 [: f
    据说这个问题是一个经常出现在计算机算法中的问题,不过当年我读书的时候对它并没有特别注意。在计算机编程的算法中,类似问题又称为约瑟夫环。老兵和神牛肯定比我清楚得多。我就不多说什么算法了。牛教授 兵教授  0 ^' Z' l; o! e1 ~
    2 k, Z9 F: p1 r$ M9 i
    ---------------------------------------历史八卦的分割线----------------------------------  \: v1 t" M* L3 `  E
    这个问题是以弗拉维奥·约瑟夫斯命名的,他是1世纪的一名犹太历史学家。" j) X. Q8 o4 o  ~
    据载,他在自己的日记中写道,他和他的40个战友被罗马军队包围在洞中。他们讨论是自杀还是被俘,最终决定自杀,并以抽签的方式决定谁杀掉谁。约瑟夫斯和另外一个人是最后两个留下的人。约瑟夫斯说服了那个人,他们将向罗马军队投降,不再自杀。约瑟夫斯把他的存活归因于运气或天意。   

    该用户从未签到

    5#
    发表于 2014-7-17 09:30:00 | 只看该作者
    到处停留的叶子 发表于 2014-7-17 06:50 * `  ]( t9 k/ V, k, w
    **约瑟夫斯问题    都教授
    7 [) N" t& q2 A1 m) j" e: G( o" s0 {( X. y4 Q! J& C3 y
    我们来聊聊约瑟夫斯问题。
    # n3 [  U+ c4 I
    1. 经过努力学习,这题我能用java编程做了,oh yeah!" U/ F- F8 c# `: n7 R- U$ V' _, f, _, j

    . {/ n+ s! ]2 t0 ~# o! [$ b) p: A2. 但叶子问我的不是编程。对于给定的k,我可以用倒推法硬推。但是,想了半天也没有想到不用推的直接算法。
    * R5 n, n" L4 {) n# {+ P3 Z- m. {. s, Y* p8 w0 i- d7 C0 H
    推的方法如下:
    * o$ _5 g) U6 }' v: D- d3 T5 q$ b; b# _. }6 N& K( t
    n=1,就一号,跑不掉的
    - c5 W6 R4 p- l; m+ }n=2, 要站 (k+1) 模 n 那一号设a(2),比如 k=2, 则 a2=1 (号); 若 k=3, 则 a2=2 - u) s$ n/ P+ X1 W
    如此类推,n=i 时,要站在 a(i-1)+k 模 n 那一号。比如,k=6, n=19 时 要站在14号。
    ' s: e% w, z- a- R
    ' d9 Q1 a; W/ |' Q3 b' k7 V* N# b0 t* ^; N* X  @8 ]
    我算到k=6都找不出更直接的规律,不好玩

    评分

    参与人数 1爱元 +6 收起 理由
    到处停留的叶子 + 6 哇!!!

    查看全部评分

  • TA的每日心情
    擦汗
    2020-3-23 00:29
  • 签到天数: 134 天

    [LV.7]分神

    6#
     楼主| 发表于 2014-7-17 11:02:58 | 只看该作者
    本帖最后由 到处停留的叶子 于 2014-7-16 22:06 编辑
    $ x* E0 w4 N% r2 ^+ J3 L+ L
    独角兽 发表于 2014-7-16 20:30
    0 g# b1 K% J5 K1. 经过努力学习,这题我能用java编程做了,oh yeah!
    5 P9 s* ^" ^5 Z3 L9 v
    7 Q! ]2 E1 {' I) o; T9 e/ \2. 但叶子问我的不是编程。对于给定的k,我可以用 ...

    9 f) N& g) [5 N) y1 M# p; v$ Z
    + l, o; C; Z) W* Y兽兽真是爱动脑筋啊~~我现在遇到这类问题第一想到的是打电话找高手解答,或者先在网上找找看; Z+ ~* }& G, a9 s

    / Y' y4 r6 o0 T7 O在维基上看到K=2的解法和还有K≠2的通用解法,这里摘抄过来那段关于n的有趣分析。0 C& H0 e$ [4 _6 c

    ' A+ t  R' D- J. [" a- Q还有下面我抄了两个通用算法,那个java的是不是和你做的一样啊?
    ) G1 X+ I! r0 L
    . r2 f) c/ `; w3 F" f% r2 O-----------------------------不动脑筋的分割线--------------------------
    9 M/ l/ Q: V  m. ]$ E
    2 A$ t5 ~. ~1 Q/ g; R一个小心翼翼的Java例子:1 {) v  n* N) ^4 T" q; E

    & G" W6 [0 D4 K3 u int josephus(int n, int k) {
    2 X$ a" Q3 O$ n0 X" g# C- ?        return josephus(n, k, 1);
    / b7 d, C. J1 R) h$ k5 V  }7 m  ]! y9 A8 K5 D# |* [) K! }
      int josephus(int n, int k, int startingPoint) {
    3 @6 r; f. Z  U2 B      if(n == 1)
    * b7 l: ?& K0 }( q$ y# |: L/ `          return 1;' Y4 L+ p! z+ V- c! J& G1 K
          int newSp = (startingPoint + k - 2) % n + 1;* N# H2 C" f) R( {, M

    # x( z7 Q2 w6 O% X: T5 `8 b+ {      int survivor = josephus(n - 1, k, newSp);
    + Q2 o" r$ `2 e& T8 {( J  T      if (survivor < newSp) {
    . J4 n3 w; J' h          return survivor;3 g  D9 [2 a: F9 V5 ]& ]
          } else
    " x5 [4 }5 {2 O) U          return survivor + 1;
    ) P# l% d1 U  K( u9 X/ _" Y- R  }
    ; m* o, U, E4 Q* R# m5 i9 B
    / N4 d0 b) u$ ~+ |! B7 d另外有个更简洁的例子
    0 |9 h1 t1 O' ]* l+ a" a8 B  def josephus(n, k):, Q' L# k6 e5 ~0 k4 s6 Q; `* [
        if n ==1:
    ! V  L& D9 O5 x* q/ _      return 1
    $ X5 J+ V" |( ~. [; }: T    else:
    8 i& e1 Q+ Z, U& W+ W9 M0 q( I      return ((josephus(n-1,k)+k-1) % n)+18 G2 C; u5 |0 M

    , k1 x1 I7 W& r8 l(如果n这个数字很大很大,k很小很小,电脑会不会转晕过去呢?)
    * `! }/ P# y, }1 U! l5 F; v' }7 ]+ j( v- M' I/ G
    以上摘自 http://en.wikipedia.org/wiki/Josephus_problem#Solution& O: S1 b6 L  i% ^

    * ?( Q/ u+ G. F$ S) h6 i7 n' z3 K& K( m7 g4 x2 R2 w( {9 X
    关于n的分析:
    % i: X7 F/ V. ~/ `$ r- }设f(n)为一开始有n个人时,生还者的位置。
    4 j/ J5 b( x. e4 @如果一开始有偶数个人,则第二圈时位置为x的人一开始在第2x - 1个位置。因此位置为f(2n)的人开始时的位置为2f(n) - 1。这便给出了以下的递推公式:( Y2 r7 e7 `1 Z# p' Z; k
    * T& Z% q" N# l& U$ H
    f(2n)=2f(n)-11 U: `7 y/ }6 s1 Y, y
    如果一开始有奇数个人,则走了一圈以后,最终是号码为1的人被杀。于是同样地,再走第二圈时,新的第二、第四、……个人被杀,等等。在这种情况下,位置为x的人原先位置为2x+1。这便给出了以下的递推公式:
    / f9 M9 ~' n$ v8 D! Y
    7 d3 a( R' P7 Q1 k! Bf(2n+1)=2f(n)+1
    ' R+ r1 y% x0 C
    1 x( Q: c* o8 S& \' r& {" D
      T+ g, N; H8 [& s% q4 u# i4 X: H如果我们把n和f(n)的值列成表,我们可以看出一个规律:% s- n9 g5 v- J5 A, P8 H

    + q8 p% W& t# xn    1    2        3        4        5        6        7        8        9        10        11        12        13        14        15    16
    4 c0 p2 M; ]6 {6 e6 l. hf(n) 1    1        3        1        3        5        7        1        3        5        7        9        11        13        15        1
    0 Q# h$ b+ B: ^$ z+ w1 i) `; @, J$ A4 [- Z
    从中可以看出,f(n)是一个递增的奇数数列,每当n是2的幂时,便重新从f(n)=1开始。因此,如果我们选择m和l,使得n=2^m+l且0≤ l<2^m,那么f(n)=2 . l+1。显然,表格中的值满足这个方程。可以用数学归纳法给出一个证明。$ ^. R; w: h' \4 H
    7 }' [' y7 n9 T4 R7 W
    定理:如果n=2^m+l且0≤ l<2^m,则f(n) = 2.l+1。1 Q: @7 d1 X4 k- P4 |7 X0 s: V

    : J) t1 L% r$ U. r1 k( t3 }5 p) D9 o* l  W6 D7 I
    答案的最漂亮的形式,与n的二进制表示有关:把n的第一位移动到最后,便得到f(n)。这可以通过把n表示为2^m+l来证明。

    该用户从未签到

    7#
    发表于 2014-7-17 11:19:06 | 只看该作者
    到处停留的叶子 发表于 2014-7-17 11:02 : ^# @* a# r5 K! a- N
    兽兽真是爱动脑筋啊~~我现在遇到这类问题第一想到的是打电话找高手解答,或者先在网上找找看
    ) Z# {- a3 p9 D( y7 E9 M% o1 C+ r4 W% t$ C
    在 ...
    - n) M/ p4 @$ b% o/ _( W- D1 B
    我的推法就是这个:
    : M+ W9 Z" b0 W& T/ K0 B0 y
    * T$ p: {' q! X" n) A5 |  return ((josephus(n-1,k)+k-1) % n)+1
    7 e5 n4 i( ?6 {6 h7 l0 |9 k/ S% X$ F9 N" r5 Z( Y* ~( i) J, z- d
    我有一点疏忽是如果整除,模的结果是0,但实际应该取n。所以这个表达式把 "+1"搞到括号外面就完全对了。8 z0 A. D1 a, j" {

    7 E# q. A7 V- M4 q3 B2的情况我没单拿出来搞。
  • TA的每日心情
    慵懒
    2020-5-10 00:00
  • 签到天数: 1237 天

    [LV.10]大乘

    8#
    发表于 2014-7-18 09:47:20 | 只看该作者
    绕死了
  • TA的每日心情
    慵懒
    昨天 20:51
  • 签到天数: 2214 天

    [LV.Master]无

    9#
    发表于 2014-7-18 22:40:37 | 只看该作者
    看不懂
    9 i' G* b% z  }; r不过今天不幸运数是17
  • TA的每日心情
    擦汗
    2020-3-23 00:29
  • 签到天数: 134 天

    [LV.7]分神

    10#
     楼主| 发表于 2014-7-19 03:04:00 | 只看该作者
    常挨揍 发表于 2014-7-18 09:40
    4 ?8 q- d" B. o% Q0 q看不懂
    * L0 S+ o: u2 K; ?* ?; v不过今天不幸运数是17

    , s: Z9 I9 @/ _! s7月17日成了一个黑色的日子。很让人感觉生命无常。# s; \  k- f8 S8 K, g  }# P

    7 e* C9 v, \7 m( O+ f; B以后出行挑日子,要找一个幸运数的交集,这里前面的9个数字也可以参考一下:1,3,7,9,13,15,21,25,31, @# {) N- a/ M: ?
    5 L4 D; w- B! S) Y$ z
    13号如果遇上星期五,还是算了,不要不信邪。

    手机版|小黑屋|Archiver|网站错误报告|爱吱声   

    GMT+8, 2026-1-9 08:42 , Processed in 0.037555 second(s), 22 queries , Gzip On.

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表