-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheuler.rb
40 lines (32 loc) · 799 Bytes
/
euler.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
module Euler
class Fibonacci
def self.abaixo(limite)
ant, pro = 1, 2
valores = [] unless block_given?
while ant <= limite
block_given? ? (yield ant) : (valores << ant)
ant, pro = pro, ant + pro
end
valores unless block_given?
end
end
class Primo
require 'prime'
def self.divisores(valor)
valor.prime_division.transpose.first
end
def self.numero_divisores(valor)
valor.prime_division.transpose.last.inject(1){|resultado, elemento| resultado * (elemento+1)}
end
def self.posicao(valor)
Prime.first(valor).last
end
def self.soma(quantidade)
Prime.each(quantidade).inject(:+)
end
end
def self.palindrome(valor)
valor = valor.to_s
valor == valor.reverse
end
end