rmathemata 0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/arithmetic.rb +36 -36
  2. metadata +4 -3
data/lib/arithmetic.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  #!/usr/local/bin/ruby -Kuw
2
-
3
2
  module Kernel
4
3
 
5
4
  def ∑(values)
@@ -24,52 +23,53 @@ module Kernel
24
23
 
25
24
  end
26
25
 
27
- module PowerfulInteger
28
- require 'mathn'
26
+ module RMathemata
27
+ module Integer
28
+ require 'mathn'
29
29
 
30
- def gcdn integers
31
- return self unless integers.any?
32
- self.gcd integers.shift.gcdn(integers)
33
- end
30
+ def gcdn integers
31
+ return self unless integers.any?
32
+ self.gcd integers.shift.gcdn(integers)
33
+ end
34
34
 
35
- def prime_powers
36
- prime_division.map(&:pop)
37
- end
35
+ def prime_powers
36
+ prime_division.map(&:pop)
37
+ end
38
38
 
39
- def is_powerful?
40
- return true if self == 1
41
- prime_powers.min >= 2
42
- end
39
+ def is_powerful?
40
+ return true if self == 1
41
+ prime_powers.min >= 2
42
+ end
43
43
 
44
- def is_perfect_power?
45
- n = 1
46
- loop do
47
- n += 1
48
- root = self**(1/n)
49
- return true if root.is_a?(Integer)
50
- return false if root < 2
44
+ def is_perfect_power?
45
+ n = 1
46
+ loop do
47
+ n += 1
48
+ root = self**(1/n)
49
+ return true if root.is_a?(Integer)
50
+ return false if root < 2
51
+ end
51
52
  end
52
- end
53
53
 
54
- def is_achilles_number?
55
- is_powerful? and not is_perfect_power?
56
- end
54
+ def is_achilles_number?
55
+ is_powerful? and not is_perfect_power?
56
+ end
57
57
 
58
- def euler_totient
59
- return 1 if self == 1
60
- self * ∏x("1 - 1/p", "p", prime_division.map(&:first))
61
- end
58
+ def euler_totient
59
+ return 1 if self == 1
60
+ self * ∏x("1 - 1/p", "p", prime_division.map(&:first))
61
+ end
62
62
 
63
- def is_strong_achilles_number?
64
- is_achilles_number? and euler_totient.is_achilles_number?
65
- end
63
+ def is_strong_achilles_number?
64
+ is_achilles_number? and euler_totient.is_achilles_number?
65
+ end
66
66
 
67
- def numbers_of_strong_achilles_numbers_below
68
- 1.upto(self).inject(0) {|total, number| total += 1 if number.is_strong_achilles_number? ; total}
67
+ def numbers_of_strong_achilles_numbers_below
68
+ 1.upto(self).inject(0) {|total, number| total += 1 if number.is_strong_achilles_number? ; total}
69
+ end
69
70
  end
70
-
71
71
  end
72
72
 
73
73
  class Integer
74
- include PowerfulInteger
74
+ include RMathemata::Integer
75
75
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rmathemata
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- version: "0.1"
9
+ - 1
10
+ version: 0.1.1
10
11
  platform: ruby
11
12
  authors:
12
13
  - Philippe Cantin
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-10-11 00:00:00 +02:00
18
+ date: 2010-10-17 00:00:00 +02:00
18
19
  default_executable:
19
20
  dependencies: []
20
21