设为首页收藏本站

爱吱声

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

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

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

    [LV.7]分神

    跳转到指定楼层
    楼主
    发表于 2014-7-16 11:30:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    上次说到  小小的停留之三 “计算机之父” 天才的数学家冯·诺伊曼
    1 Z5 b+ w" m/ Q6 X  j9 A8 I看冯·诺伊曼的故事,他有句名言:“若人们不相信数学简单,只因他们未意识到生命之复杂。”! T# Q. J) K+ \+ l6 K( m

    # A9 K# B% s* l  ?2 o他有个好朋友,据说是最好的朋友,是生于匈牙利的波兰犹太人数学家乌拉姆,这位先生曾参与曼克顿计划(核武器上有Teller-Ulam design,Teller指爱德华·泰勒)。他亦有参与研究核能推动的航天飞机。在纯数学上,遍历理论、数论、集合论和代数拓扑都有他的足迹。- Y. }! s5 t% ^( ~7 h0 ~7 o$ k
    + b2 b# n) l2 u6 Z/ j9 M1 j% W
    所以我在这里要说的幸运数不是中餐馆的饼干里给你的数字,也不是买彩票开奖的数字,而是在1955年波兰数学家乌拉姆提出的一个自然数列,用类似埃拉托斯特尼筛法的算法后留下的整数集合。
    8 m7 K8 P$ u# n8 D, b0 Z# n$ Z2 q9 ?
    ; a1 e: N6 R5 E, i. ^) kIn 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.3 s, I, G" ?, I0 F: ?' N
    & c" j8 ]" O1 h7 @+ }# \/ B. i
    幸运数的定义7 w. U  g) i- ^& R! }/ k
    FORMULA       
    $ r. N, G+ e- P$ l4 n# ^Start 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.
    & H0 N# _$ c) i9 c7 u( t
    & z) L) `( x. L; ]3 ^+ k, S9 ^  C, E具体一点来说说幸运数列怎么筛选出来的(喜欢数论的同学一定知道挑选素数的埃拉托斯特尼筛法,这个办法是类似的). x$ H/ G! n: y0 k9 C5 o: J+ f! p
    7 ?4 b& ^; A8 ^5 I; |; l$ ?
    初始,从1开始的自然数列:
    5 n: p6 I( K1 \( O* Y. DBegin with a list of integers starting with 1:
    & A) N. a& i/ f) M, x1        2        3        4        5        6        7        8        9        10        11        12        13        14        15        16        17        18        19        20        21        22        23        24        25  ……
    1 r. x; p5 F  m0 v) I: A5 d/ J8 i2 j& J  Y) O! l* {& \
    开始删除,在这个数列里,从2开始,首先是每隔2个数字,删除第二个数字。剩下来的数字是奇数~~
    1 u. S7 v# W" _" K3 l! v- O剩下的数列如下:: S' Z, Y- b9 z6 J3 F! @
    Every second number (all even numbers) is eliminated, leaving only the odd integers:6 b% a- M" c- V& ^, d( H6 P9 O$ f
    1                3                5                7                9                11                13                15                17                19                21                23                25  ……; A* o" }0 z& S9 e
    , Y& b/ n$ R5 y' N0 l
    接下来是3,每隔3个数字删除第三个。剩下的数列如下:
    , s; B. d! A, DThe second term in this sequence is 3. Every third number which remains in the list is eliminated:
    1 `8 N3 o8 t: p# {9 W1                3                                7                9                                13                15                                19                21                                25  ……
    9 w+ ~0 M- U( B* F" j6 d2 ^; t
    0 c" @7 |& G/ d% T( `现在接下来的数字是7,所以把上述数列中每第七个删除,剩下的数列是:. H! A$ P# \% w4 N$ a! b0 @
    The next surviving number is now 7, so every seventh number that remains is eliminated:0 r  k1 ^4 Q, D# `7 q+ l8 }9 u5 v5 F) v
    1                3                                7                9                                13                15                                                21                                25  ……
    ) R# S2 i6 A. V$ e5 ]) j( m  R! D+ w6 H% \
    接下来是9,……
    $ K3 o  @* D: D  ~% K- i9 D这个过程可以一直无限继续下去,被幸运地留下来的数字就是幸运数。
    6 h$ ?: Y# R1 K: @6 x* r/ f: F9 m1 O# |& R; p0 N0 R
    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).$ O6 N0 L' v' {  C9 j4 z
    在OEIS编号为A000959的数列就是Lucky numbers2 v- d2 ~6 p% u9 [) z1 C4 C( p& [- v- }
    上述链接给了一个稍微长一点的幸运数列:1 |; ]* [) u! s" s5 \
    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 {. n+ h$ d( s3 D( t( v2 U/ t; w$ a- [" o1 F+ i; L7 M
    有没有同样喜欢看数字的同学告诉我,你看了这个数列发现的是什么呢?6 d4 I' W- ]- R4 c5 X4 B" D4 ?
    2 D6 C" Z3 q0 Q2 x" E

    - N' I% Q( d0 o8 c; M0 D$ k4 E; e1 `; ?
    8 g* q  |/ Q- q" n; \: n. N第一个短一点的数列,我发现,1,3,5,7的平方(1,9,25,49)都是幸运数,但9的平方81就不是,于是马上想,那么是不是只有奇素数的平方才是幸运数呢?答案是不,11的平方也不是。于是叶子的第一个猜想就在几秒里被叶子证明是错误的。
    , q7 m/ o+ X6 F$ f0 _5 h3 U, j- d: s* P& s, q2 [
    数论里的各种数列是数学里最容易上手理解的,不过最迷人最折磨人的也是它。著名的例子就是哥德巴赫猜想(Goldbach's conjecture)。! Q  d* @! l# p6 b: E5 H
    幸运数的挑选过程,类似上面提到过的埃拉托斯特尼筛法挑选素数的过程,同时也和这个著名猜想有关。- l( r4 ]+ }5 Q% A1 l6 k
    另外幸运数也曾经在正式进入书面讨论的时候被建议叫做 "the sieve of Josephus Flavius",因为它的挑选让大家想到著名的约瑟夫斯问题。
    8 J) S3 b5 ~* I/ F! B
    ! [* ?9 k& V1 J; |2 t* l暂时就到这里吧,接下去要不要继续聊引出来的概念和问题呢?
    2 a% f7 t7 _* V/ K# L4 u, S! ]. i6 S6 S* @3 n4 b# J  ?! ]8 }3 o
    **什么叫做Conjecture?
    2 {6 P% d' T4 U0 a0 ^**约瑟夫斯问题。

    评分

    参与人数 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)
    0 l  x1 L- u3 p' m( ~# I$ S0 V2 L: ?0 l1 l( x
    猜想(conjecture)是一个看上去是真的,但尚未被证明的叙述。比如说上面提到的数学数列,因为它表现的没有规律和无限性,基于观察的某些结论,如果不能用科学逻辑的方法来证明在无限的未来它都是真的,那么之前所观察到的所有事实都仅仅是看上去是正确的。% L% u' ^0 A; I& g

    / F* I2 j& g0 i- O% g# I; J  j5 c当猜想被证明后,它便会成为定理。猜想一日未成为定理,数学家都要小心在逻辑结构之中使用这些猜想。  x' h% X/ h- s. C# b4 ~  s( J4 p

    0 D  D8 Z, i- M2 Y, P! |( D猜想主要因为类比推理和偶然发现的巧合而出现。数学家通常会使用不完全归纳法,来测试自己的猜想。例如费马曾经根据首四个费马数是素数,便猜想所有费马数都是素数(此猜想已被推翻)1 d0 t! K$ x3 g: u8 ?

    ' n+ ~  }8 x: t( i假说(Hypothesis),即指按照预先设定,对某种现象进行的解释,即根据已知的科学事实和科学原理,对所研究的自然现象及其规律性提出的推测和说明,而且数据经过详细的分类、归纳与分析,得到一个暂时性但是可以被接受的解释。任何一种科学理论在未得到实验确证之前表现为假设学说或假说。
    " V4 [! K4 @4 d; P$ E" F  ?6 }
    2 O( q6 @1 L# v4 G1 U有的假设还没有完全被科学方法所证明,也没有被任何一种科学方法所否定,但能够产生深远的影响。如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 编辑 ; E" R) Z1 r$ G2 E4 y7 @) [  \8 O
    6 |+ W) W& B* b6 r, z, P  P
    **约瑟夫斯问题    都教授 ! h/ p: ?2 i' X* s
    ! V& g' w1 Z" e1 f7 X, `
    我们来聊聊约瑟夫斯问题。4 J6 k3 ^5 U! c4 K& u

      N: M+ z* n, |/ a% r有n个囚犯站成一个圆圈,准备处决。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。8 A+ E. s7 D6 Z* J0 l

    " _& E4 Z5 c1 L5 ?问题是,给定了n和k,一开始要站在什么地方才能避免被处决?
    ! w3 }& _4 W/ [
    3 g, I" E  Q) p: s; T- y& U' u+ r& ?' ~, ^  |8 I8 g. m
    ---------------------------------------不思考的分割线---------------------------------------------4 I/ K* F1 d( l9 |4 b, J
    据说这个问题是一个经常出现在计算机算法中的问题,不过当年我读书的时候对它并没有特别注意。在计算机编程的算法中,类似问题又称为约瑟夫环。老兵和神牛肯定比我清楚得多。我就不多说什么算法了。牛教授 兵教授  
    ( [( g; [$ C8 }9 X, \9 V
    . A9 A0 k# B& o" L  ~' Z  }8 z  C---------------------------------------历史八卦的分割线----------------------------------
    ; c& ~1 i5 s5 m' {这个问题是以弗拉维奥·约瑟夫斯命名的,他是1世纪的一名犹太历史学家。& ]. ]% S7 m1 c: y1 T
    据载,他在自己的日记中写道,他和他的40个战友被罗马军队包围在洞中。他们讨论是自杀还是被俘,最终决定自杀,并以抽签的方式决定谁杀掉谁。约瑟夫斯和另外一个人是最后两个留下的人。约瑟夫斯说服了那个人,他们将向罗马军队投降,不再自杀。约瑟夫斯把他的存活归因于运气或天意。   

    该用户从未签到

    5#
    发表于 2014-7-17 09:30:00 | 只看该作者
    到处停留的叶子 发表于 2014-7-17 06:50 ( ]0 \2 _5 i6 y+ v' Q
    **约瑟夫斯问题    都教授 . w5 i) s' A& t0 C

    ) Z2 C9 N4 E6 \  n# t& Z1 t/ ^) h; w我们来聊聊约瑟夫斯问题。
    , y; o( [9 t4 E7 I7 }
    1. 经过努力学习,这题我能用java编程做了,oh yeah!
    # ]0 Q2 Q* c$ o2 Z, b
    9 y2 `6 \; Z. ]6 }* I1 q2. 但叶子问我的不是编程。对于给定的k,我可以用倒推法硬推。但是,想了半天也没有想到不用推的直接算法。
    * ~# k( y% C. `1 w2 K; R. Q
    * f  _& I1 O0 y, q4 y推的方法如下:
    " J7 ?7 S2 D% h6 w" D1 c1 d6 n2 C8 G4 B- P% |" q# e
    n=1,就一号,跑不掉的5 Y% C: P6 Z$ b& ~" g5 m/ |
    n=2, 要站 (k+1) 模 n 那一号设a(2),比如 k=2, 则 a2=1 (号); 若 k=3, 则 a2=2
    8 }: E5 `7 X. a. \3 @4 L+ p( i: i如此类推,n=i 时,要站在 a(i-1)+k 模 n 那一号。比如,k=6, n=19 时 要站在14号。1 |' L0 |5 S4 h0 o" J2 V& D) [! y

    # V: @! \/ I* a% t6 a8 y8 f; p4 ~  Y/ S) c, M1 D  }, ~- ]* x
    我算到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 编辑 $ l/ G. p/ |: R4 I, d# z" S
    独角兽 发表于 2014-7-16 20:30 9 [; U8 c1 P) l' z
    1. 经过努力学习,这题我能用java编程做了,oh yeah!
    1 N! @: [* O  [" y( ]: X) N6 {/ R
    2. 但叶子问我的不是编程。对于给定的k,我可以用 ...

    * }; L7 f" [1 z5 w. J5 o: d
    5 [1 r7 u( r; k5 L" b: C兽兽真是爱动脑筋啊~~我现在遇到这类问题第一想到的是打电话找高手解答,或者先在网上找找看1 n( e& }$ C% t% o5 x

    ) J, w# a' J( M  X' R0 [$ _+ o1 Y在维基上看到K=2的解法和还有K≠2的通用解法,这里摘抄过来那段关于n的有趣分析。
    ' K2 A3 ?0 G# v# [- o- I
    3 m5 k, h' q1 B6 K+ ]6 W还有下面我抄了两个通用算法,那个java的是不是和你做的一样啊?
    * m& Z# ?; Q  E1 O( s1 m" ?0 w. J7 M& m& h1 Q! J& @
    -----------------------------不动脑筋的分割线--------------------------
    * L3 D! U! f; n% L1 Z/ y+ v% l; L. m' l
    一个小心翼翼的Java例子:  u: X3 f# M& m1 R0 G" I

    % o2 I, C" j6 ^0 D% K# U  L2 A int josephus(int n, int k) {  d: P4 C1 L0 \# m& _
            return josephus(n, k, 1);
    3 [# l3 ?* ^& K  }+ q+ ^' s; v( R) y/ L' g
      int josephus(int n, int k, int startingPoint) {1 ^& e. J  r. k7 @
          if(n == 1)
    7 S- J% r  ^* t' Y( m# t          return 1;
    / f8 j( |1 i- B      int newSp = (startingPoint + k - 2) % n + 1;
    5 p+ Q$ \1 u5 \' F$ h' d% l8 L
    % x0 C3 Z( n( g! r1 M, m      int survivor = josephus(n - 1, k, newSp);
    8 s4 V7 j4 _4 Q, f0 ]! q. x      if (survivor < newSp) {
    ' O. W- E& l' l" g6 H6 t4 C          return survivor;0 @6 X$ q% K4 N6 h8 V
          } else
    $ \. P8 P  ]$ L( s1 c2 [5 Q          return survivor + 1;( V2 c& l6 Z. I' j# S1 c  V$ y( J: J
      }) i5 U/ b6 j- U  j8 v
    7 f8 A7 E- m2 W/ L! [1 b8 H2 t
    另外有个更简洁的例子% {. M7 K* i; x
      def josephus(n, k):8 L; _( }' _! W; Z- L# w
        if n ==1:
    ; W9 @8 G4 u+ ~) X- v$ @1 B      return 1, {) @; R: ]; N# Y4 C( E" Q
        else:
    * w5 n  j# D) p; q- g5 b      return ((josephus(n-1,k)+k-1) % n)+1
    - d" ?9 s) D7 j+ X( [% l( R  w5 K( ~/ B' @& n" o
    (如果n这个数字很大很大,k很小很小,电脑会不会转晕过去呢?)7 W* Y" |$ r. ^2 K% ]$ Z, z

    ) U9 p9 d3 o  o* `0 w& d2 Z以上摘自 http://en.wikipedia.org/wiki/Josephus_problem#Solution& O( Q6 c4 _8 X2 j
      n  ]1 j  @( ^+ u% z+ z

    ; R, _2 m8 n- `. ]关于n的分析:
    # s/ l" A( |! U0 ?2 S8 Q设f(n)为一开始有n个人时,生还者的位置。9 `2 A4 p5 b* ^1 h) a
    如果一开始有偶数个人,则第二圈时位置为x的人一开始在第2x - 1个位置。因此位置为f(2n)的人开始时的位置为2f(n) - 1。这便给出了以下的递推公式:) u5 I5 H' y7 _- J6 }
    4 E6 y4 m( ^8 K8 {; V& L* u0 o' a
    f(2n)=2f(n)-1
    5 _' a8 l; F: y4 Z, M( [( l6 z如果一开始有奇数个人,则走了一圈以后,最终是号码为1的人被杀。于是同样地,再走第二圈时,新的第二、第四、……个人被杀,等等。在这种情况下,位置为x的人原先位置为2x+1。这便给出了以下的递推公式:8 S6 c* z3 ]! D6 A" l, Y0 J
    " E, `+ z5 i2 y! n! p, V* j# f
    f(2n+1)=2f(n)+1
    - _7 K- W0 N$ v) W
    & X4 e; n3 ^' I& _$ v/ M5 @7 T6 u. M1 Y* H: s- |# \8 A& @2 V+ Z
    如果我们把n和f(n)的值列成表,我们可以看出一个规律:
    2 H  ]1 h6 Y- p
    / t2 A% ]: d8 Wn    1    2        3        4        5        6        7        8        9        10        11        12        13        14        15    16
    , v3 p$ R$ K( K+ p( i6 tf(n) 1    1        3        1        3        5        7        1        3        5        7        9        11        13        15        1
    . x# u; C% Z9 ]; Q. ]& U4 M
    . X  Y$ a2 O  g从中可以看出,f(n)是一个递增的奇数数列,每当n是2的幂时,便重新从f(n)=1开始。因此,如果我们选择m和l,使得n=2^m+l且0≤ l<2^m,那么f(n)=2 . l+1。显然,表格中的值满足这个方程。可以用数学归纳法给出一个证明。& [3 {8 h: |& j2 p) r
    " h# i# q, Q2 q8 [
    定理:如果n=2^m+l且0≤ l<2^m,则f(n) = 2.l+1。# Z1 Q! @2 s9 k* B/ h5 h2 c
    & \0 q+ z3 X6 L1 `" R8 Y& T1 w
    2 ?. P! S1 t8 `( T
    答案的最漂亮的形式,与n的二进制表示有关:把n的第一位移动到最后,便得到f(n)。这可以通过把n表示为2^m+l来证明。

    该用户从未签到

    7#
    发表于 2014-7-17 11:19:06 | 只看该作者
    到处停留的叶子 发表于 2014-7-17 11:02 0 f( Z4 a) i  w& t: D
    兽兽真是爱动脑筋啊~~我现在遇到这类问题第一想到的是打电话找高手解答,或者先在网上找找看: R, H! M3 N  \4 _+ [

    & e( m& ^3 f4 F2 W" J在 ...
    4 K) _0 m/ n, @. j; M! A
    我的推法就是这个:4 ~0 W9 O' W! @- J; j0 b* d* Y

    : J+ t$ [' B7 f8 \8 u0 n2 X  return ((josephus(n-1,k)+k-1) % n)+1
    1 x' W& v: c( V: w7 {* `0 @, S
    , b7 G) M3 T% s+ K5 i- ?我有一点疏忽是如果整除,模的结果是0,但实际应该取n。所以这个表达式把 "+1"搞到括号外面就完全对了。
    ) |% |9 b, b3 I2 l% ]8 _7 j, U5 E$ N
    0 P" Y5 Z" Y0 R$ l+ x9 p3 i0 _! E  f2的情况我没单拿出来搞。
  • TA的每日心情
    慵懒
    2020-5-10 00:00
  • 签到天数: 1237 天

    [LV.10]大乘

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

    [LV.Master]无

    9#
    发表于 2014-7-18 22:40:37 | 只看该作者
    看不懂
    . A1 [1 [  b3 S2 A/ @2 ?不过今天不幸运数是17
  • TA的每日心情
    擦汗
    2020-3-23 00:29
  • 签到天数: 134 天

    [LV.7]分神

    10#
     楼主| 发表于 2014-7-19 03:04:00 | 只看该作者
    常挨揍 发表于 2014-7-18 09:40 : h" K3 r' X( m- v8 I- C, v. k
    看不懂
    ; z+ ~# _' m; f* L1 s# M! V8 Y不过今天不幸运数是17

    " m6 b4 q' W9 a% W9 i# y2 Y7月17日成了一个黑色的日子。很让人感觉生命无常。! B& q, K# D, O1 n" J& p

    ) Q7 h9 E6 k+ H以后出行挑日子,要找一个幸运数的交集,这里前面的9个数字也可以参考一下:1,3,7,9,13,15,21,25,31: S, l! H6 Z9 o( c- Y* T6 u/ x
    % T; k3 H7 c  g4 z
    13号如果遇上星期五,还是算了,不要不信邪。

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

    GMT+8, 2026-2-9 07:44 , Processed in 0.086083 second(s), 33 queries , Gzip On.

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

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