Comments
Description
Transcript
映画「博士の愛した数式」より
映画「博士の愛した数式」より Masato Shimura 2006 年 1 月 26 日 目次 1 約数 2 2 完全数 2 3 友愛数 2 4 Script 4 小川洋子著の「博士が愛した数式」が映画になり、寺尾聡 深尾絵里 浅丘ルリ子吉岡秀 隆等のキャストで封切られた。1976 年頃の交通事故による記憶障害で、事故後は記憶が √ 80 分しか持たない数学者と家政婦、 と呼ばれる 10 才の家政婦の男の子が織りなすドラ マで、愛したオイラーの数式の方は映画を見ていただくとして、この中に、友愛数、完全 数が出てきた。 「28 は完全数、まだ 30 個ほどしか発見されていない。最小は 6 だ。そして偉大な江夏 の背番号。」 ⇒ 阪神ファンにはたまらない。 「君の誕生日は」 「2 月 20 日です。」 「僕の学長賞の時計は 284 番。のんきに皿洗いをしている場合ではない。良いかねこれ は友愛数だ。約数を足し合わせると・・・」 約数 1 friend_sub0 6 3 2 1 friend_sub0 28 14 7 4 2 1 friend_sub0 496 248 124 62 31 16 8 4 2 1 +/ friend_sub0 496 496 完全数 2 自分自身を除く約数の和が自分自身と等しくなる数。 perfect 1000 6 6 28 28 496 496 計算には時間を要する。 3 友愛数 自分自身を除く約数の和が相互にパートナーとなる数。550 組発見されているようだ。 発見された数は奇数同士か偶数同士であるがその先は不明である。 friend_sub0 220 110 55 44 22 20 11 10 5 4 2 1 +/ friend_0 220 284 friend_sub0 284 142 71 4 2 1 +/ friend_sub0 284 220 friend 2000 NB. list は完全数を含む。 また他約数も出している。 +----+----+---------+ |6 |6 | 6 6 | | | |25 6 | +----+----+---------+ |28 |28 |28 28 | +----+----+---------+ |220 |284 |284 220 | +----+----+---------+ |284 |220 |220 284 | | | | |562 284 +----+----+---------+ |496 |496 |496 496 | | | | |652 496 +----+----+---------+ |1184|1210|1210 1184| | | |1336 1184| +----+----+---------+ |1210|1184|1184 1210| | | |1490 1210| | | |1604 1210| | | |1898 1210| +----+----+---------+ 4 Script 力任せの総当たり法である。 Usage: friend 300 friend_sub0=: 3 : 0 NB. find yakusuu NB. Usage: u. 220 TMP1=. (2 x: TMP0=. y. % >:i. y.) {."1 }.(1= 1{"1 TMP1) # TMP1 ) friend_sub1=: 3 : 0 TMP2=: (i.y.),. ; +/ L:0 friend_sub0 L:0 {@> i. y. TMP3=: (/:{:"1 TMP2){ TMP2 TMP4=:(˜: 1{"1 TMP3)<;.1 TMP3 NB. TMP5=: |."1 L:0 TMP4 ) perfect=:3 : ’(=/"1 tmp)# tmp=.; 2}. friend_sub1 y.’ friend=: 3 : 0 NB. friend 2000 TMP5=: 2}. friend_sub1 y. NB. drop 0 1 TMP6=: |. "1 L:0 TMP5 MAX=: >: >./ {:"1 ;TMP5 NB. +1 IND5=:( i. MAX) e. {."1 /:˜ ;TMP5 TMP7=: {@>(i. MAX),. {:"1 IND6=:( i. MAX) e. tmp=: TMP8=:IND6 expand_box TMP9=: TMP7,.TMP8 IND5 expand_0 /:˜ ;TMP5 /:˜ ;{. L:0 TMP6 {. L:0 TMP6 TMP11=: sel_sub TMP9 TMP12=:(1{"1 TMP11) ,. }. "1 L:0{:"1 TMP11 (; +/ L:0 ({. "1 TMP12) = L:0 {:"1 TMP12) # TMP11 ) sel_sub=: 3 : 0 TMP10=:(1{"1 y.) ,. }. "1 L:0{:"1 (* ; y. +/ L:0 ({. "1 TMP10) * L:0 {: "1 TMP10) # y. ) expand_0=:4 : ’((x. # tmp) i. tmp=. i. # x.){y., 0’ expand_box=:4 : ’((x. # tmp) i. tmp=. i. # x.){y., <0’