2016年9月25日日曜日

160925(2)

Ruby


倍数判定法(2)

何倍したものを足すもしくは引けばいいか出力してみた。
素数が大きくなるにつれて、絶対値は大きくなるようだ。

# -*- coding: cp932 -*-

require 'prime'
require 'OpenSSL'

n = 1000
p Prime.each(n).select{|pr| 10 % pr != 0}.map{|pr| OpenSSL::BN.new("10").mod_inverse(pr).to_i}
p 'これだと使いにくいので、下を使用'
ary = []
Prime.each(n).select{|pr| 10 % pr != 0}.each{|pr|
  cp = OpenSSL::BN.new("10").mod_inverse(pr).to_i
  cp -= pr if cp > pr / 2
  ary << cp
}
p ary

出力結果
[1, 5, 10, 4, 12, 2, 7, 3, 28, 26, 37, 13, 33, 16, 6, 55, 47, 64, 22, 8, 25, 9, 68, 91, 31, 75, 11, 34, 89, 118, 96, 14, 15, 136, 110, 49, 117, 52, 18, 163, 172, 58, 138, 20, 190, 67, 159, 23, 70, 24, 217, 226, 180, 79, 27, 244, 194, 253, 85, 88, 215, 280, 94, 222, 298, 236, 243, 35, 106, 36, 257, 112, 38, 115, 39, 278, 361, 41, 42, 379, 388, 130, 44, 133, 45, 320, 415, 139, 327, 48, 341, 442, 50, 151, 51, 469, 157, 487, 383, 390, 169, 57, 514, 404, 411, 178, 60, 541, 425, 184, 432, 62, 568, 577, 193, 453, 196, 66, 595, 202, 474, 205, 622, 631, 71, 72, 509, 220, 74, 223, 676, 530, 685, 77, 232, 551, 558, 81, 730, 739, 247, 579, 83, 84, 256, 600, 86, 259, 614, 793, 265, 621, 635, 820, 92, 93, 656, 847, 663, 286, 677, 874, 684, 295, 892, 698]
"これだと使いにくいので、下を使用"
[1, -2, -1, 4, -5, 2, 7, 3, -3, -11, -4, 13, -14, 16, 6, -6, -20, -7, 22, 8, 25, 9, -29, -10, 31, -32, 11, 34, -38, -13, -41, 14, 15, -15, -47, 49, -50, 52, 18, -18, -19, 58, -59, 20, -21, 67, -68, 23, 70, 24, -24, -25, -77, 79, 27, -27, -83, -28, 85, 88, -92, -31, 94, -95, -33, -101, -104, 35, 106, 36, -110, 112, 38, 115, 39, -119, -40, 41, 42, -42, -43, 130, 44, 133, 45, -137, -46, 139, -140, 48, -146, -49, 50, 151, 51, -52, 157, -54, -164, -167, 169, 57, -57, -173, -176, 178, 60, -60, -182, 184, -185, 62, -63, -64, 193, -194, 196, 66, -66, 202, -203, 205, -69, -70, 71, 72, -218, 220, 74, 223, -75, -227, -76, 77, 232, -236, -239, 81, -81, -82, 247, -248, 83, 84, 256, -257, 86, 259, -263, -88, 265, -266, -272, -91, 92, 93, -281, -94, -284, 286, -290, -97, -293, 295, -99, -299]

0 件のコメント:

コメントを投稿