factorise 0.3.0 → 0.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6faab2cf87b9a02e688f70a9825990a0912f104f
4
- data.tar.gz: 80abec8a9c6d90b75933cc144223f2c9904018eb
3
+ metadata.gz: 5656fb07bb64f5f30b9e7cb18ccd606733b05e23
4
+ data.tar.gz: b0300dd4aa37a799ba498426a11fb22fcd2d9634
5
5
  SHA512:
6
- metadata.gz: 50a7d49786054a5287892c0083373cdcc8beb9eeac4de9f49d307b78ed060e403a27135cda2fd3a5d34043fd8f7f136baeab7ddb83daf7c2ed7b521a1b06adfd
7
- data.tar.gz: 2e878a2dc1cd9462b9b37dfc8198687e9a939ec406bcc2dfac6a855f8d09e2d1376e6e9a2b5bd513ac595656d377d856c00011852ca68bc474d711c10f1ce717
6
+ metadata.gz: 86a47fe4b37e9f7516b58cdd21587796ec888a6fb56c7bc4df432066127757524fde6b6905fa14a7e421b8c9d7d90da63ed922cca161000aa10b7a8c2dbc3c91
7
+ data.tar.gz: 5ff45ee3ba570d98c2238f6538a2185519ac590517cd4e1d3e72d0015656c0748beaca544afde9992961708284ef3b05f71f59ac239a196e22c6d9f24512c6fe
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- factorise (0.3.0)
4
+ factorise (0.4.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -20,14 +20,23 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- 100.factorise
24
- => [2, 2, 5, 5]
25
-
26
- 100.factoriseh
27
- => {2=>2, 5=>2}
28
-
29
- 100.nonprime
30
- => [1, 2, 4, 5, 10, 20, 25, 50, 100]
23
+ 24.factorise
24
+ => [2, 2, 2, 3]
25
+
26
+ 24.factoriseh
27
+ => {2=>3,
28
+ 3=>1
29
+ }
30
+
31
+ 24.nonprime
32
+ => [1, 2, 3, 4, 6, 8, 12, 24]
33
+
34
+ 24.factorpairs
35
+ => [[1, 24],
36
+ [2, 12],
37
+ [3, 8],
38
+ [4, 6]
39
+ ]
31
40
 
32
41
  ## Development
33
42
 
data/lib/factorise.rb CHANGED
@@ -2,7 +2,7 @@ require "factorise/version"
2
2
  require 'prime'
3
3
 
4
4
  module Factorise
5
- # return the prime factors of a number
5
+ # prime factors of a number
6
6
  def factorise
7
7
  number = self.to_s.dup.to_i
8
8
  factors = []
@@ -25,7 +25,7 @@ module Factorise
25
25
  end
26
26
  end
27
27
 
28
- # return the prime factors of a number as an array
28
+ # prime factors of a number as a hash
29
29
  def factoriseh
30
30
  array = self.factorise
31
31
  hash = {}
@@ -42,13 +42,34 @@ module Factorise
42
42
  return hash
43
43
  end
44
44
 
45
- # return the non prime factors of a number (doesnt exclude primes)
45
+ # non prime factors of a number (doesnt exclude primes)
46
46
  def nonprime
47
47
  num = self.to_s.dup.to_i
48
48
 
49
49
  # nice oneline
50
50
  return (1..num).select { |n| num % n == 0 }
51
51
  end
52
+
53
+ # factor pairs of a number (two numbers that multiply to get the number)
54
+ def factorpairs
55
+ num = self.to_s.dup.to_i
56
+ pairs = []
57
+ factors = num.nonprime
58
+
59
+ # include or not include middle value
60
+ if factors.length % 2 == 0
61
+ firsthalf = factors.first(factors.length / 2)
62
+ else
63
+ firsthalf = factors.first((factors.length / 2) + 1)
64
+ end
65
+
66
+ # get pairs
67
+ firsthalf.each_with_index do |factor, index|
68
+ pairs[index] = [factor, num/factor]
69
+ end
70
+
71
+ return pairs
72
+ end
52
73
  end
53
74
 
54
75
  class Integer; include Factorise; end
@@ -1,3 +1,3 @@
1
1
  module Factorise
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factorise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - samtomcom