2015年2月27日金曜日

150227

Ruby


計算

今更だが、通常割り算の計算は切り捨てだが、
切り捨てをしないままにするにはmathnを使えば良い。

require 'mathn'

p 5 / 3
p 5 / 3 + 5 / 3 + 5 / 3

出力結果は
1
3
ではなく、
(5/3)
5
となる。

2015年2月25日水曜日

150225

Ruby


Square-free integer

m未満のsquare-freeな整数の個数を出力するコードを書いてみた。
オンライン整数列大辞典の
A005117(http://oeis.org/A005117/list)
と比較し、答え合わせしてみる。

require 'prime'

N0 = 113
N  = 101

# m未満のsquare-freeな整数の個数
def number_of_squarefree_numbers(m , n = m)
  s = 0
  Prime.each{|x|
    break if x * x >= m || x >= n
    s += number_of_squarefree_numbers((m - 1) / (x * x) + 1, x)
  }
  return m - 1 - s
end

for i in (1..N)
  p [i, number_of_squarefree_numbers(i + 1, )]
end

# OEIS A005117との比較用
ary = []
fn = 0
for i in (1..N0)
  bn = number_of_squarefree_numbers(i + 1, )
  ary << i if fn != bn
  fn = bn
end

# OEIS A005117のデータ
ary0 =
[1,2,3,5,6,7,10,11,13,14,15,17,19,21,22,23,26,29,
 30,31,33,34,35,37,38,39,41,42,43,46,47,51,53,55,
 57,58,59,61,62,65,66,67,69,70,71,73,74,77,78,79,
 82,83,85,86,87,89,91,93,94,95,97,101,102,103,105,
 106,107,109,110,111,113]
# 一致の確認
p ary == ary0

2015年2月24日火曜日

150224(2)

Ruby


Cyclic number

http://en.wikipedia.org/wiki/Cyclic_number
に載っているcyclic numberを出力するコードを書いてみた。

require 'prime'

N = 70

Full_Reptend_Primes = []
Prime.each(N){|pr|
  if pr > 5
    i = 1
    n = 10
    while i < pr - 1 && n != 1
      n *= 10
      n %= pr
      i += 1
    end
    Full_Reptend_Primes << pr if i == pr - 1
  end
}

# cyclic numberの出力
Full_Reptend_Primes.each{|i|
  a = 10 ** (i - 1) / i
  p sprintf("%0*d", i - 1, a)
}

150224

Python


和について

print sum(range(1, 101))
print sum(x for x in range(1, 101))

上二つを比べると、2つ目の方が一般性がある。
例えば、二乗の和に変更したいなら、

print sum(x ** 2 for x in range(1, 101))

とすればよい。

print sum(f(x) for x in xrange( , ))

の形で覚えていてもいいかもしれない。