2016年1月11日月曜日

160111(2)

Ruby


単位分数の和が1 / 2(1)

http://www004.upp.so-net.ne.jp/s_honma/mathbun/mathbun339.htm
を読んで、分母のみを出力してみた。

# -*- coding: cp932 -*-

def f(n)
  return [] if n < 2
  ary = [2]
  a_ary = [[2]]
  (3..n).each{|i|
    (1..i / 2).each{|j|
      if i.gcd(j) == 1
        ary.delete_at(ary.index(j * (i - j)))
        ary << i * j
        ary << i * (i - j)
      end
    }
    a_ary << ary.clone.sort
  }
  a_ary
end

p f(1)
p f(2)
p ary = f(30)
puts '逆数の和が1 / 2になることを確認してみる'
p ary.map{|i| i.inject(0){|s, j| s += 1r / j} == 1r / 2}

出力結果
[]
[[2]]
[[2], [3, 6], [4, 6, 12], [5, 10, 12, 15, 20], [6, 10, 12, 15, 20, 30], [7, 14, 15, 20, 21, 28, 30, 35, 42], [8, 14, 20, 21, 24, 28, 30, 35, 40, 42, 56], [9, 18, 21, 24, 28, 30, 35, 36, 40, 42, 45, 56, 63, 72], [10, 18, 24, 28, 30, 30, 35, 36, 40, 42, 45, 56, 63, 70, 72, 90], [11, 22, 30, 33, 35, 36, 40, 42, 44, 45, 55, 56, 63, 66, 70, 72, 77, 88, 90, 99, 110], [12, 22, 30, 33, 36, 40, 42, 44, 45, 55, 56, 60, 63, 66, 70, 72, 77, 84, 88, 90, 99, 110, 132], [13, 26, 33, 39, 44, 45, 52, 55, 56, 60, 63, 65, 66, 70, 72, 77, 78, 84, 88, 90, 91, 99, 104, 110, 117, 130, 132, 143, 156], [14, 26, 39, 42, 44, 52, 55, 56, 60, 63, 65, 66, 70, 70, 72, 77, 78, 84, 88, 90, 91, 99, 104, 110, 117, 126, 130, 132, 143, 154, 156, 182], [15, 30, 39, 42, 52, 55, 60, 60, 63, 65, 66, 70, 70, 72, 77, 78, 84, 88, 90, 91, 99, 104, 105, 110, 117, 120, 126, 130, 132, 143, 154, 156, 165, 182, 195, 210], [16, 30, 42, 48, 52, 60, 60, 65, 66, 70, 70, 72, 77, 78, 80, 84, 88, 90, 91, 99, 104, 105, 110, 112, 117, 120, 126, 130, 132, 143, 144, 154, 156, 165, 176, 182, 195, 208, 210, 240], [17, 34, 48, 51, 60, 65, 68, 70, 77, 78, 80, 84, 85, 88, 90, 91, 99, 102, 104, 105, 110, 112, 117, 119, 120, 126, 130, 132, 136, 143, 144, 153, 154, 156, 165, 170, 176, 182, 187, 195, 204, 208, 210, 221, 238, 240, 255, 272], [18, 34, 48, 51, 60, 68, 70, 78, 80, 84, 85, 88, 90, 90, 91, 99, 102, 104, 105, 110, 112, 117, 119, 120, 126, 126, 130, 132, 136, 143, 144, 153, 154, 156, 165, 170, 176, 182, 187, 195, 198, 204, 208, 210, 221, 234, 238, 240, 255, 272, 306], [19, 38, 51, 57, 68, 76, 80, 85, 90, 91, 95, 99, 102, 104, 105, 110, 112, 114, 117, 119, 120, 126, 126, 130, 132, 133, 136, 143, 144, 152, 153, 154, 156, 165, 170, 171, 176, 182, 187, 190, 195, 198, 204, 208, 209, 210, 221, 228, 234, 238, 240, 247, 255, 266, 272, 285, 304, 306, 323, 342], [20, 38, 57, 60, 68, 76, 80, 85, 90, 95, 102, 104, 105, 110, 112, 114, 117, 119, 120, 126, 126, 130, 132, 133, 136, 140, 143, 144, 152, 153, 154, 156, 165, 170, 171, 176, 180, 182, 187, 190, 195, 198, 204, 208, 209, 210, 220, 221, 228, 234, 238, 240, 247, 255, 260, 266, 272, 285, 304, 306, 323, 340, 342, 380], [21, 42, 57, 60, 76, 84, 85, 90, 95, 102, 105, 105, 112, 114, 117, 119, 120, 126, 126, 130, 132, 133, 136, 140, 143, 144, 152, 153, 154, 156, 165, 168, 170, 171, 176, 180, 182, 187, 190, 195, 198, 204, 208, 209, 210, 210, 220, 221, 228, 231, 234, 238, 240, 247, 255, 260, 266, 272, 273, 285, 304, 306, 323, 336, 340, 342, 357, 380, 399, 420], [22, 42, 60, 66, 76, 84, 90, 95, 102, 105, 110, 112, 114, 119, 120, 126, 126, 130, 132, 133, 136, 140, 143, 144, 152, 153, 154, 154, 156, 165, 168, 170, 171, 176, 180, 182, 187, 190, 195, 198, 198, 204, 208, 209, 210, 210, 220, 221, 228, 231, 234, 238, 240, 247, 255, 260, 266, 272, 273, 285, 286, 304, 306, 323, 330, 336, 340, 342, 357, 374, 380, 399, 418, 420, 462], [23, 46, 66, 69, 84, 92, 95, 105, 110, 114, 115, 119, 126, 133, 136, 138, 140, 143, 144, 152, 153, 154, 154, 156, 161, 165, 168, 170, 171, 176, 180, 182, 184, 187, 190, 195, 198, 198, 204, 207, 208, 209, 210, 210, 220, 221, 228, 230, 231, 234, 238, 240, 247, 253, 255, 260, 266, 272, 273, 276, 285, 286, 299, 304, 306, 322, 323, 330, 336, 340, 342, 345, 357, 368, 374, 380, 391, 399, 414, 418, 420, 437, 460, 462, 483, 506], [24, 46, 66, 69, 84, 92, 105, 110, 114, 115, 120, 126, 133, 136, 138, 140, 144, 152, 153, 154, 154, 156, 161, 165, 168, 168, 170, 171, 176, 180, 182, 184, 187, 190, 195, 198, 198, 204, 207, 208, 209, 210, 210, 220, 221, 228, 230, 231, 234, 238, 240, 247, 253, 255, 260, 264, 266, 272, 273, 276, 285, 286, 299, 304, 306, 312, 322, 323, 330, 336, 340, 342, 345, 357, 368, 374, 380, 391, 399, 408, 414, 418, 420, 437, 456, 460, 462, 483, 506, 552], [25, 50, 69, 75, 92, 100, 105, 110, 115, 120, 133, 138, 140, 150, 152, 153, 154, 161, 165, 168, 168, 170, 171, 175, 176, 180, 182, 184, 187, 190, 195, 198, 198, 200, 204, 207, 208, 209, 210, 210, 220, 221, 225, 228, 230, 231, 234, 238, 240, 247, 253, 255, 260, 264, 266, 272, 273, 275, 276, 285, 286, 299, 300, 304, 306, 312, 322, 323, 325, 330, 336, 340, 342, 345, 350, 357, 368, 374, 380, 391, 399, 400, 408, 414, 418, 420, 425, 437, 450, 456, 460, 462, 475, 483, 506, 525, 550, 552, 575, 600], [26, 50, 75, 78, 92, 100, 110, 115, 120, 130, 138, 140, 150, 152, 154, 161, 168, 168, 170, 171, 175, 176, 180, 182, 182, 184, 187, 190, 195, 198, 198, 200, 204, 207, 208, 209, 210, 210, 220, 221, 225, 228, 230, 231, 234, 234, 238, 240, 247, 253, 255, 260, 264, 266, 272, 273, 275, 276, 285, 286, 286, 299, 300, 304, 306, 312, 322, 323, 325, 330, 336, 340, 342, 345, 350, 357, 368, 374, 380, 390, 391, 399, 400, 408, 414, 418, 420, 425, 437, 442, 450, 456, 460, 462, 475, 483, 494, 506, 525, 546, 550, 552, 575, 598, 600, 650], [27, 54, 75, 78, 100, 108, 115, 120, 130, 135, 138, 150, 154, 161, 168, 168, 171, 175, 180, 182, 184, 187, 189, 190, 195, 198, 198, 200, 204, 207, 208, 209, 210, 210, 216, 220, 221, 225, 228, 230, 231, 234, 234, 238, 240, 247, 253, 255, 260, 264, 266, 270, 272, 273, 275, 276, 285, 286, 286, 297, 299, 300, 304, 306, 312, 322, 323, 325, 330, 336, 340, 342, 345, 350, 351, 357, 368, 374, 378, 380, 390, 391, 399, 400, 408, 414, 418, 420, 425, 432, 437, 442, 450, 456, 459, 460, 462, 475, 483, 494, 506, 513, 525, 540, 546, 550, 552, 575, 594, 598, 600, 621, 650, 675, 702], [28, 54, 78, 84, 100, 108, 120, 130, 135, 138, 140, 150, 154, 161, 168, 168, 175, 180, 182, 184, 189, 190, 198, 198, 200, 204, 207, 208, 209, 210, 210, 216, 220, 221, 225, 228, 230, 231, 234, 234, 238, 240, 247, 252, 253, 255, 260, 264, 266, 270, 272, 273, 275, 276, 285, 286, 286, 297, 299, 300, 304, 306, 308, 312, 322, 323, 325, 330, 336, 340, 342, 345, 350, 351, 357, 364, 368, 374, 378, 380, 390, 391, 399, 400, 408, 414, 418, 420, 420, 425, 432, 437, 442, 450, 456, 459, 460, 462, 475, 476, 483, 494, 506, 513, 525, 532, 540, 546, 550, 552, 575, 594, 598, 600, 621, 644, 650, 675, 700, 702, 756], [29, 58, 84, 87, 108, 116, 130, 135, 140, 145, 150, 161, 168, 174, 175, 182, 184, 189, 198, 200, 203, 207, 209, 210, 216, 220, 221, 225, 228, 230, 231, 232, 234, 234, 238, 240, 247, 252, 253, 255, 260, 261, 264, 266, 270, 272, 273, 275, 276, 285, 286, 286, 290, 297, 299, 300, 304, 306, 308, 312, 319, 322, 323, 325, 330, 336, 340, 342, 345, 348, 350, 351, 357, 364, 368, 374, 377, 378, 380, 390, 391, 399, 400, 406, 408, 414, 418, 420, 420, 425, 432, 435, 437, 442, 450, 456, 459, 460, 462, 464, 475, 476, 483, 493, 494, 506, 513, 522, 525, 532, 540, 546, 550, 551, 552, 575, 580, 594, 598, 600, 609, 621, 638, 644, 650, 667, 675, 696, 700, 702, 725, 754, 756, 783, 812], [30, 58, 84, 87, 108, 116, 130, 135, 140, 145, 150, 168, 174, 175, 182, 184, 189, 198, 200, 203, 207, 210, 210, 216, 220, 225, 228, 230, 231, 232, 234, 234, 238, 240, 247, 252, 253, 255, 260, 261, 264, 266, 270, 272, 273, 275, 276, 285, 286, 286, 290, 297, 299, 300, 304, 306, 308, 312, 319, 322, 323, 325, 330, 330, 336, 340, 342, 345, 348, 350, 351, 357, 364, 368, 374, 377, 378, 380, 390, 390, 391, 399, 400, 406, 408, 414, 418, 420, 420, 425, 432, 435, 437, 442, 450, 456, 459, 460, 462, 464, 475, 476, 483, 493, 494, 506, 510, 513, 522, 525, 532, 540, 546, 550, 551, 552, 570, 575, 580, 594, 598, 600, 609, 621, 638, 644, 650, 667, 675, 690, 696, 700, 702, 725, 754, 756, 783, 812, 870]]
逆数の和が1 / 2になることを確認してみる
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。