设为首页收藏本站

爱吱声

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

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

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

    [LV.7]分神

    跳转到指定楼层
    楼主
    发表于 2014-7-16 11:30:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    上次说到  小小的停留之三 “计算机之父” 天才的数学家冯·诺伊曼2 F+ i9 S0 Q: v1 Z: S0 w0 ?  C
    看冯·诺伊曼的故事,他有句名言:“若人们不相信数学简单,只因他们未意识到生命之复杂。”9 _$ l" l, F/ |8 p  C- p# f9 _
    " s. n; S- L5 M" R: T; k) k6 O" `
    他有个好朋友,据说是最好的朋友,是生于匈牙利的波兰犹太人数学家乌拉姆,这位先生曾参与曼克顿计划(核武器上有Teller-Ulam design,Teller指爱德华·泰勒)。他亦有参与研究核能推动的航天飞机。在纯数学上,遍历理论、数论、集合论和代数拓扑都有他的足迹。
    6 Z5 ^8 T1 m; g% @& e' e0 E; k' Q6 i9 r- R' `3 I7 R$ g
    所以我在这里要说的幸运数不是中餐馆的饼干里给你的数字,也不是买彩票开奖的数字,而是在1955年波兰数学家乌拉姆提出的一个自然数列,用类似埃拉托斯特尼筛法的算法后留下的整数集合。
    3 U' K- D7 o: J6 j
    - A* ]2 b8 V! C1 `3 uIn 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.& R$ L& {/ D; u2 D
    " E) q  \* w. O3 `: L! u
    幸运数的定义
    + r& c0 o( a8 n# w+ |" AFORMULA       
    " U4 I' H# f* `" k& uStart 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.
    " |: w( G! g9 _) {' g( L9 V9 Q: Z% R. ]% V/ g- L
    具体一点来说说幸运数列怎么筛选出来的(喜欢数论的同学一定知道挑选素数的埃拉托斯特尼筛法,这个办法是类似的)
    2 [! O! O2 r% a0 N! a7 D
    % E# \; _# v/ f; U9 b; @5 `初始,从1开始的自然数列:
    7 }1 M% U5 d: J2 _  b$ q  MBegin with a list of integers starting with 1:
      a+ ~  ]0 J4 V2 l# v1        2        3        4        5        6        7        8        9        10        11        12        13        14        15        16        17        18        19        20        21        22        23        24        25  ……9 a5 L/ w/ u, S
      K; ]# \; P) L& J# G. a; M
    开始删除,在这个数列里,从2开始,首先是每隔2个数字,删除第二个数字。剩下来的数字是奇数~~, b  @  g" y0 l' @
    剩下的数列如下:
    & q9 l) l. U* f0 }' {Every second number (all even numbers) is eliminated, leaving only the odd integers:$ G5 a0 p# X* ?' B5 L7 n  @- ]
    1                3                5                7                9                11                13                15                17                19                21                23                25  ……
    - v" w* G1 A4 j4 u! x3 \- S8 f' C$ e: y: ]& j# Y2 j3 \, h8 ^
    接下来是3,每隔3个数字删除第三个。剩下的数列如下:; Z' M" w' y9 g  R: g/ B4 u( J+ f7 _7 h
    The second term in this sequence is 3. Every third number which remains in the list is eliminated:# i# D3 W  a$ A4 h* X* F
    1                3                                7                9                                13                15                                19                21                                25  ……$ N/ F0 p. t  E2 T4 |: n9 \6 y$ V

    7 l% Z9 F. f) }! V9 |5 K4 w现在接下来的数字是7,所以把上述数列中每第七个删除,剩下的数列是:
    4 r; y8 i( `6 BThe next surviving number is now 7, so every seventh number that remains is eliminated:; e( m( t6 q) u! Z+ ?
    1                3                                7                9                                13                15                                                21                                25  ……# t. y/ {; T6 O1 ^  ~

    & j/ [+ Z* D# U0 U% I4 w0 p) [+ C接下来是9,……* ~# [- W) K$ o/ j2 G
    这个过程可以一直无限继续下去,被幸运地留下来的数字就是幸运数。5 ~2 E, _: x9 Y! v; d, @
    ) M4 p) E. S" y& G
    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).+ X. |# E# {! Z# b+ P# E
    在OEIS编号为A000959的数列就是Lucky numbers
    6 b# C1 J% p# a5 [2 R1 s+ {上述链接给了一个稍微长一点的幸运数列:
    1 w9 H3 a9 E2 B6 p# [1, 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 ……
    8 U7 K" v6 d( X0 c' T5 P$ q6 b8 l1 g& N3 h
    有没有同样喜欢看数字的同学告诉我,你看了这个数列发现的是什么呢?& p) p" m5 \5 s6 g: y) s8 K9 U: B

    ) I8 I6 O7 f4 M9 s7 T9 J" T% I
    - B' e2 s) t' D% E
    第一个短一点的数列,我发现,1,3,5,7的平方(1,9,25,49)都是幸运数,但9的平方81就不是,于是马上想,那么是不是只有奇素数的平方才是幸运数呢?答案是不,11的平方也不是。于是叶子的第一个猜想就在几秒里被叶子证明是错误的。
    ) w/ e. |( M, V6 {2 w0 f9 h
      ~/ C, u, N$ v7 }, ~数论里的各种数列是数学里最容易上手理解的,不过最迷人最折磨人的也是它。著名的例子就是哥德巴赫猜想(Goldbach's conjecture)。
    ' _* }: h% Q* \- ]幸运数的挑选过程,类似上面提到过的埃拉托斯特尼筛法挑选素数的过程,同时也和这个著名猜想有关。
    % }- W9 T7 D" c, p. {; O3 N0 |7 Z另外幸运数也曾经在正式进入书面讨论的时候被建议叫做 "the sieve of Josephus Flavius",因为它的挑选让大家想到著名的约瑟夫斯问题。
    5 B9 v1 h# s4 X8 s' o: J" t8 ]
    - J; y' b/ \9 Q+ K暂时就到这里吧,接下去要不要继续聊引出来的概念和问题呢?
    , M) w7 M( p. {: v
    7 l7 y) e9 X$ l$ \6 z2 `  s  |! F**什么叫做Conjecture?
    / g" u& j' d4 I3 f**约瑟夫斯问题。

    评分

    参与人数 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)
    6 Q9 k3 T: u* F( ^# o/ O: z  m, A$ Y# y, I. N, T; B: ?; U. b: K' @2 w
    猜想(conjecture)是一个看上去是真的,但尚未被证明的叙述。比如说上面提到的数学数列,因为它表现的没有规律和无限性,基于观察的某些结论,如果不能用科学逻辑的方法来证明在无限的未来它都是真的,那么之前所观察到的所有事实都仅仅是看上去是正确的。
    ' {/ V" S( [% V4 W: A& Q% C5 F
    + K+ _  j6 D; @1 L! d' v8 N: x1 C当猜想被证明后,它便会成为定理。猜想一日未成为定理,数学家都要小心在逻辑结构之中使用这些猜想。; E$ D: L6 e+ {9 _: A3 `
    4 @3 G# l; X& Q. Y# ~2 O
    猜想主要因为类比推理和偶然发现的巧合而出现。数学家通常会使用不完全归纳法,来测试自己的猜想。例如费马曾经根据首四个费马数是素数,便猜想所有费马数都是素数(此猜想已被推翻)
    & `( ^2 U, _1 p7 A
    9 n7 b$ S$ ]  J( R4 M; Q假说(Hypothesis),即指按照预先设定,对某种现象进行的解释,即根据已知的科学事实和科学原理,对所研究的自然现象及其规律性提出的推测和说明,而且数据经过详细的分类、归纳与分析,得到一个暂时性但是可以被接受的解释。任何一种科学理论在未得到实验确证之前表现为假设学说或假说。
    2 h$ Q/ M! B/ p: _0 g
    4 ?5 ^2 m! c" m# A' d5 B1 \# e3 S5 Z有的假设还没有完全被科学方法所证明,也没有被任何一种科学方法所否定,但能够产生深远的影响。如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 编辑 ; Y& z. F0 V+ D4 B! @* N( P) o/ z8 m

    8 c- k, p' Q+ G* \, T1 K**约瑟夫斯问题    都教授 0 G8 b3 ^6 i# L# ^" N
    6 r1 c. r( K- i/ m6 I
    我们来聊聊约瑟夫斯问题。8 o) }2 |0 O9 t
    & F2 V( x7 b- w! q' D
    有n个囚犯站成一个圆圈,准备处决。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。
    . u. r6 N* F; q- |* w# N( {: ^/ j; q
    # V4 c& S# L* v( t- q问题是,给定了n和k,一开始要站在什么地方才能避免被处决?
    3 S6 P! ~: _/ R) [' i  i( T% N) V
    1 m. |. \. N" t0 E
    ' f1 A$ E. Z# l( D& K- w---------------------------------------不思考的分割线---------------------------------------------2 |5 X# x9 c1 J
    据说这个问题是一个经常出现在计算机算法中的问题,不过当年我读书的时候对它并没有特别注意。在计算机编程的算法中,类似问题又称为约瑟夫环。老兵和神牛肯定比我清楚得多。我就不多说什么算法了。牛教授 兵教授  
    2 R' k8 I" ?) d  [& j6 c' Y# O, j5 r
    ---------------------------------------历史八卦的分割线----------------------------------3 N; l% ^* t5 y/ T# }. |4 I8 s$ ^$ T
    这个问题是以弗拉维奥·约瑟夫斯命名的,他是1世纪的一名犹太历史学家。
    # \  ~( K# M  p9 M- H# ~据载,他在自己的日记中写道,他和他的40个战友被罗马军队包围在洞中。他们讨论是自杀还是被俘,最终决定自杀,并以抽签的方式决定谁杀掉谁。约瑟夫斯和另外一个人是最后两个留下的人。约瑟夫斯说服了那个人,他们将向罗马军队投降,不再自杀。约瑟夫斯把他的存活归因于运气或天意。   

    该用户从未签到

    5#
    发表于 2014-7-17 09:30:00 | 只看该作者
    到处停留的叶子 发表于 2014-7-17 06:50 ( f* Q& N; P. z/ `* ^) A
    **约瑟夫斯问题    都教授
    # B$ d+ F$ I2 j2 b: }/ z2 L1 `3 I4 Q. n' }1 r7 U
    我们来聊聊约瑟夫斯问题。

    # c& K$ u" r- q9 A1. 经过努力学习,这题我能用java编程做了,oh yeah!
    6 h3 ?* U5 ~' f# o! C8 u' }0 Z7 K/ C% j; E3 l  ^" y* z* s
    2. 但叶子问我的不是编程。对于给定的k,我可以用倒推法硬推。但是,想了半天也没有想到不用推的直接算法。. v8 h+ \, T# e" G6 m$ [8 f
    8 V  ]0 H. s& n. C# t+ q  n7 l2 Y
    推的方法如下:
    6 G8 A0 b+ ]7 E% n: u4 B; l! X+ z* Z2 l: s& N7 `! G. L* P5 |8 a
    n=1,就一号,跑不掉的
    # D' Y3 B+ ^# n$ ]% jn=2, 要站 (k+1) 模 n 那一号设a(2),比如 k=2, 则 a2=1 (号); 若 k=3, 则 a2=2
    + T0 j- p2 ^9 I4 g4 `2 V如此类推,n=i 时,要站在 a(i-1)+k 模 n 那一号。比如,k=6, n=19 时 要站在14号。
    7 x" u6 R+ B/ \% i' b
    * d$ c6 _, a' {' D9 g" |( R
    0 W; I/ h- h# p* H+ }6 u我算到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 编辑 $ f' m& [; g" g+ u4 X& c% c% W
    独角兽 发表于 2014-7-16 20:30 : p4 R. \$ A5 y% N6 h% ~
    1. 经过努力学习,这题我能用java编程做了,oh yeah!) k% V. H9 y0 l/ V
    ) Q3 e8 E3 T$ f
    2. 但叶子问我的不是编程。对于给定的k,我可以用 ...

    9 c) \7 ~; f& \' M, t: D( Y& f  q) |, P; r
    兽兽真是爱动脑筋啊~~我现在遇到这类问题第一想到的是打电话找高手解答,或者先在网上找找看
    2 h$ p1 Z' j) E, K! e, |
    0 m3 q0 I9 z4 @在维基上看到K=2的解法和还有K≠2的通用解法,这里摘抄过来那段关于n的有趣分析。# b6 @3 j, D7 ]: l* K5 Q. n

    : }1 G% G! b2 P) N) l1 T: R还有下面我抄了两个通用算法,那个java的是不是和你做的一样啊?* H5 `4 b* m2 y; |. d
    + z, ~. G; W! }
    -----------------------------不动脑筋的分割线--------------------------
    # y& g4 b! X. d# x. R- }
    % G& R+ H7 H+ _6 _+ `一个小心翼翼的Java例子:
    2 g3 F' {, G' q' p/ i1 d0 z
    ; G5 |1 {( {* J/ @/ U int josephus(int n, int k) {6 j! [# k2 C8 K- [0 R
            return josephus(n, k, 1);2 V' z2 p8 X  D) j
      }6 _( I7 L* {7 Y
      int josephus(int n, int k, int startingPoint) {( T1 g5 N1 ]$ J& @& _4 S
          if(n == 1)& q  ~( n5 z3 r
              return 1;
    ! I# {7 v( F2 |  L% F& @      int newSp = (startingPoint + k - 2) % n + 1;
    % f4 @* e( k) x  b% m- q0 {; @
    5 b- d2 R) j; K9 R% \      int survivor = josephus(n - 1, k, newSp);
    & E6 ?& s0 @" M( g1 v      if (survivor < newSp) {% M8 W0 b4 |- b7 q+ D( p  T+ v) c
              return survivor;
    % O* o, M: }2 S3 B& A- ~      } else' q4 q" s) G2 z( s
              return survivor + 1;
    & f% K( I. d+ C7 Z  }2 h3 ^! _9 d7 x; v1 K( M% a% U
    0 {  S9 v" |# M- {' W
    另外有个更简洁的例子; M6 Y9 A3 F; v3 }9 r
      def josephus(n, k):
    % j- z# X+ i) G* x# a; t' s8 y, d/ [    if n ==1:+ {+ e( H. `: L* n
          return 1" C9 K/ O- F& U9 f9 e- Y
        else:+ N4 }) C# l4 g* T" L
          return ((josephus(n-1,k)+k-1) % n)+1" T, `' G" i* Y3 H" a! u
    # N6 O- S* @5 j. v  R' O
    (如果n这个数字很大很大,k很小很小,电脑会不会转晕过去呢?)$ P. i0 V7 e" [; L4 P3 Q
    ) p, _. ]/ L  F" I3 B6 `
    以上摘自 http://en.wikipedia.org/wiki/Josephus_problem#Solution
    4 t- R! M0 \. O. h* l, Y1 C4 _8 g. u( Z# E: m5 H& ^# p
    3 e( F( s% |9 x& J/ o' [0 h6 M
    关于n的分析:
    / S4 m: D/ y+ v5 v设f(n)为一开始有n个人时,生还者的位置。7 Y5 ^( m4 e' f/ q7 ^
    如果一开始有偶数个人,则第二圈时位置为x的人一开始在第2x - 1个位置。因此位置为f(2n)的人开始时的位置为2f(n) - 1。这便给出了以下的递推公式:
    ) p/ X. J+ ~3 \& p# }- L2 z0 \! A- V' s$ }! s# d3 X/ `) u9 S
    f(2n)=2f(n)-15 i/ X/ i: A. }* A
    如果一开始有奇数个人,则走了一圈以后,最终是号码为1的人被杀。于是同样地,再走第二圈时,新的第二、第四、……个人被杀,等等。在这种情况下,位置为x的人原先位置为2x+1。这便给出了以下的递推公式:
    9 K: X3 M! I7 I* v2 {( h* H' H7 T7 f$ l. j5 U
    f(2n+1)=2f(n)+1
    8 I2 N0 x( {7 x" k0 t3 {1 g* p3 [' f2 O" U+ d# [2 w. |2 ]) H
    , ?7 [' F* Q6 K
    如果我们把n和f(n)的值列成表,我们可以看出一个规律:0 l, |3 [4 W. s( W
    / K  F1 o2 d% M0 A: c2 ]
    n    1    2        3        4        5        6        7        8        9        10        11        12        13        14        15    16  D  L& F& N3 b( d2 [  J
    f(n) 1    1        3        1        3        5        7        1        3        5        7        9        11        13        15        14 Y  E# k; u  ?  z4 M' U4 v/ b( F* H
    2 Q, ?9 \7 r1 V) e' S2 N
    从中可以看出,f(n)是一个递增的奇数数列,每当n是2的幂时,便重新从f(n)=1开始。因此,如果我们选择m和l,使得n=2^m+l且0≤ l<2^m,那么f(n)=2 . l+1。显然,表格中的值满足这个方程。可以用数学归纳法给出一个证明。( _$ j& q: ~7 `0 r0 ^& e
    / G& r" f1 Y+ D4 \  ]
    定理:如果n=2^m+l且0≤ l<2^m,则f(n) = 2.l+1。  w* x8 x0 E9 Z2 ?- }0 c1 _# q

    * I4 a$ `  f2 D" h
    ' b, \% }- g+ y" k2 o答案的最漂亮的形式,与n的二进制表示有关:把n的第一位移动到最后,便得到f(n)。这可以通过把n表示为2^m+l来证明。

    该用户从未签到

    7#
    发表于 2014-7-17 11:19:06 | 只看该作者
    到处停留的叶子 发表于 2014-7-17 11:02 ! u/ [3 I  j" F2 C) _" n
    兽兽真是爱动脑筋啊~~我现在遇到这类问题第一想到的是打电话找高手解答,或者先在网上找找看: N- f4 @* H7 [8 X/ _9 _
    9 W; c' X: W8 J5 l* X- A
    在 ...
    7 ]9 |* z' B6 t# W
    我的推法就是这个:
    % s5 A" L- z8 E& A, @% ]* y2 n
    $ d# P, w- i8 w  return ((josephus(n-1,k)+k-1) % n)+1
    / _6 B3 B1 c$ |% C0 E
    " R- ~- D1 |/ Y2 s我有一点疏忽是如果整除,模的结果是0,但实际应该取n。所以这个表达式把 "+1"搞到括号外面就完全对了。
    2 s5 a4 h1 Q( r+ o
    0 \. A' J: n* e% [- Z3 Y2的情况我没单拿出来搞。
  • TA的每日心情
    慵懒
    5 小时前
  • 签到天数: 1414 天

    [LV.10]大乘

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

    [LV.Master]无

    9#
    发表于 2014-7-18 22:40:37 | 只看该作者
    看不懂) g" P& C3 s4 }" i9 ^
    不过今天不幸运数是17
  • TA的每日心情
    擦汗
    2020-3-23 00:29
  • 签到天数: 134 天

    [LV.7]分神

    10#
     楼主| 发表于 2014-7-19 03:04:00 | 只看该作者
    常挨揍 发表于 2014-7-18 09:40
    . P1 U. w+ s$ v& e看不懂& U- X6 V2 K0 ~
    不过今天不幸运数是17
    " T- d' h" K3 d% p' z
    7月17日成了一个黑色的日子。很让人感觉生命无常。
    * G( m/ R9 `+ {# v4 _3 U7 d9 p) S+ {( `. W6 q, T# l  m3 z3 T
    以后出行挑日子,要找一个幸运数的交集,这里前面的9个数字也可以参考一下:1,3,7,9,13,15,21,25,31
    * L& j* ]- e) J$ ]( ]5 A
    5 ?. B& T. g! k( g  U13号如果遇上星期五,还是算了,不要不信邪。

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

    GMT+8, 2026-8-30 05:49 , Processed in 0.082191 second(s), 28 queries , Gzip On.

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

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