factorise 0.2.0 → 0.3.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: 643add6916f664ef163edaab682a03366f11f6f9
4
- data.tar.gz: 891758d27cdc36cf9688922a4123c9fa748aa8c1
3
+ metadata.gz: 6faab2cf87b9a02e688f70a9825990a0912f104f
4
+ data.tar.gz: 80abec8a9c6d90b75933cc144223f2c9904018eb
5
5
  SHA512:
6
- metadata.gz: 74deaadda017793910144fa8e35de57c0a35541e204f0190ce5663e1d8fcfad16eb30190e8a2c3a7d9095a00bd23ff06b10e4dfa34d4ef59203dc8c7925a2ade
7
- data.tar.gz: 265cf6f0d760f6480b04cb92355556f72fa2c8f897f95b18a52e1bb0e919af797a6e6d6549bec77319cb0abf026b8205d7d7ac9c8b1f0efff46b9b6b1fa73bc5
6
+ metadata.gz: 50a7d49786054a5287892c0083373cdcc8beb9eeac4de9f49d307b78ed060e403a27135cda2fd3a5d34043fd8f7f136baeab7ddb83daf7c2ed7b521a1b06adfd
7
+ data.tar.gz: 2e878a2dc1cd9462b9b37dfc8198687e9a939ec406bcc2dfac6a855f8d09e2d1376e6e9a2b5bd513ac595656d377d856c00011852ca68bc474d711c10f1ce717
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- factorise (0.2.0)
4
+ factorise (0.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -20,12 +20,14 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- [integer].factorise
23
+ 100.factorise
24
+ => [2, 2, 5, 5]
24
25
 
25
- e.g.
26
+ 100.factoriseh
27
+ => {2=>2, 5=>2}
26
28
 
27
- 15.factorise
28
- => [3,5]
29
+ 100.nonprime
30
+ => [1, 2, 4, 5, 10, 20, 25, 50, 100]
29
31
 
30
32
  ## Development
31
33
 
@@ -1,3 +1,3 @@
1
1
  module Factorise
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/factorise.rb CHANGED
@@ -2,12 +2,14 @@ require "factorise/version"
2
2
  require 'prime'
3
3
 
4
4
  module Factorise
5
+ # return the prime factors of a number
5
6
  def factorise
6
7
  number = self.to_s.dup.to_i
7
8
  factors = []
8
9
 
9
10
  primes_below = Prime.take_while { |p| p <= number / 2 }
10
11
 
12
+ # keep if divisible
11
13
  primes_below.each do |p|
12
14
  until number % p != 0
13
15
  factors << p
@@ -15,14 +17,38 @@ module Factorise
15
17
  end
16
18
  end
17
19
 
20
+ # if no factors (=> num is prime) return num
18
21
  if factors.length == 0
19
22
  return [self]
20
23
  else
21
24
  return factors
22
25
  end
23
26
  end
24
- end
25
27
 
26
- class Integer
27
- include Factorise
28
+ # return the prime factors of a number as an array
29
+ def factoriseh
30
+ array = self.factorise
31
+ hash = {}
32
+
33
+ # count each factor
34
+ array.each do |factor|
35
+ if hash.has_key? factor
36
+ hash[factor] += 1
37
+ else
38
+ hash[factor] = 1
39
+ end
40
+ end
41
+
42
+ return hash
43
+ end
44
+
45
+ # return the non prime factors of a number (doesnt exclude primes)
46
+ def nonprime
47
+ num = self.to_s.dup.to_i
48
+
49
+ # nice oneline
50
+ return (1..num).select { |n| num % n == 0 }
51
+ end
28
52
  end
53
+
54
+ class Integer; include Factorise; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factorise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - samtomcom
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-18 00:00:00.000000000 Z
11
+ date: 2017-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler