primes-utils 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -40,7 +40,7 @@ Miller-Rabin here is super fast, but probabilistic (not deterministic), primalit
40
40
  https://en.wikipedia.org/wiki/Miller-Rabin_primality_test
41
41
  The method's reliability can be increased by increasing the default input parameter of k=20.
42
42
  ```
43
- 1111111111111111111.primemr? => true
43
+ 1111111111111111111.primemr? => true
44
44
  1111111111111111111.primemr? 50 => true
45
45
  1111111111111111111.primemr?(50) => true
46
46
  11111111111111111111.primemr? => false
@@ -53,11 +53,11 @@ Determine the prime factorization of the absolute value of an integer.
53
53
  This replaces the `prime division` method in the `prime.rb` standard library.
54
54
  Returns an array of arrays of factors and exponents: [[2,4],[3,2],[5,1]] => (2^4)(3^2)(5^1) = (16)(9)(5) = 720
55
55
  Default Strictly Prime (SP) Prime Generator (PG) used here is P13.
56
- Can change SP PG used on input. Acceptable range are primes from 3 - 19.
56
+ Can change SP PG used on input. Acceptable primes range: [3 - 19].
57
57
  ```
58
58
  1111111111111111111.prime_division => [[1111111111111111111, 1]]
59
59
  11111111111111111111.prime_division => [[11, 1], [41, 1], [101, 1], [271, 1], [3541, 1], [9091, 1], [27961, 1]]
60
- 123456789.factors => [[3, 2], [3607, 1], [3803, 1]]
60
+ 123456789.factors => [[3, 2], [3607, 1], [3803, 1]]
61
61
  123456789.factors 17 => [[3, 2], [3607, 1], [3803, 1]]
62
62
  123456789.factors(17) => [[3, 2], [3607, 1], [3803, 1]]
63
63
  -12345678.factors => [[2, 1], [3, 2], [47, 1], [14593, 1]]
@@ -65,30 +65,32 @@ Can change SP PG used on input. Acceptable range are primes from 3 - 19.
65
65
  1.factors => []
66
66
  ```
67
67
  **primes(start_num=0)**
68
- Create an array of primes from the range start_num - end_num.
69
- The order of the range doesn't matter if both given: start.primes end <=> end.prime start
68
+ Create an array of primes from the absolute value range (|start_num| - |end_num|).
69
+ The order of the range doesn't matter if both given: start.primes end <=> end.prime start
70
70
  If only one parameter used, then all the primes upto that number will be returned.
71
71
  ```
72
- 50.primes => [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
73
- 50.primes 125 => [53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]
74
- 300.primes 250 => [251, 257, 263, 269, 271, 277, 281, 283, 293]
75
- 541.primes.size => 100
76
- 1000.primes(5000).size => 501
77
- (prms = 1000000.primes(1000100)).size => 6
78
- prms.size => 6
79
- prms => [1000003, 1000033, 1000037, 1000039, 1000081, 1000099]
72
+ 50.primes => [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
73
+ 50.primes 125 => [53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]
74
+ 300.primes 250 => [251, 257, 263, 269, 271, 277, 281, 283, 293]
75
+ 541.primes.size => 100
76
+ 1000.primes(5000).size => 501
77
+ (prms = 1000000.primes(1000100)).size => 6
78
+ prms.size => 6
79
+ prms => [1000003, 1000033, 1000037, 1000039, 1000081, 1000099]
80
80
  -10.primes -50 => [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
81
+ 0.primes => []
82
+ 1.primes => []
81
83
  ```
82
84
  **primenth(p=11) or nthprime(p=11)**
83
85
  Return the value of the nth (absolute value) prime.
84
86
  Default Strictly Prime (SP) Prime Generator (PG) used here is P11.
85
- Can change SP PG used on input. Acceptable range are primes from 3 - 19.
87
+ Can change SP PG used on input. Acceptable primes range: [3 - 19].
86
88
  ```
87
- 1000000.primenth => 15485863
88
- 1500000.nthprime => 23879519
89
- 2000000.nthprime 13 => 32452843
90
- -500000.nthprime => 7368787
91
- 0.nthprime => 0
89
+ 1000000.primenth => 15485863
90
+ 1500000.nthprime => 23879519
91
+ 2000000.nthprime 13 => 32452843l
92
+ -500000.nthprime => 7368787
93
+ 0.nthprime => 0
92
94
  ```
93
95
  ## Coding Implementations
94
96
  The methods `primemr`, `nthprime/primenth`, and `primes` are coded in pure ruby.
@@ -40,7 +40,7 @@ module Primes
40
40
  47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103,
41
41
  107, 109, 113, 127, 131, 137, 139, 149, 151, 157,163,
42
42
  167, 173, 179, 181, 191, 193, 197, 199, 211].include? n
43
- return false if not residues.include?(n%mod) || n == 1
43
+ return false if !residues.include?(n%mod) or n == 1
44
44
 
45
45
  sqrtN = Math.sqrt(n).to_i
46
46
  p=11 # first test prime pj
@@ -160,7 +160,7 @@ module Primes
160
160
  # If start_num > self, values are switched to continue
161
161
  # Output is an array of the primes within the given range
162
162
  # To find count of these primes do: end_num.primes(start_num).size
163
- # This method uses the P13 Strictly Prime (SP) Prime Generator
163
+ # This method uses the P13 Strictly Prime (SP) Prime Generator (PG)
164
164
 
165
165
  num = self.abs; start_num = start_num.abs
166
166
  num, start_num = start_num, num if start_num > num
@@ -205,8 +205,8 @@ module Primes
205
205
  primes = start_num <= plast ? primes.drop_while {|p| p < start_num} : []
206
206
  k = (start_num-2).abs/mod # start_num's residue group value
207
207
  modk = mod*k # start_num's mod group value
208
- m = rescnt*k # number of prms elements upto kth resgroup
209
- r = 0 # begin process at start of resgroup
208
+ m = rescnt*k # number of prms elements up to kth resgroup
209
+ r = 0 # begin processing at start of resgroup
210
210
  while m < maxprms
211
211
  r +=1; if r > rescnt; r=1; modk +=mod end
212
212
  if prms[m]
@@ -1,5 +1,5 @@
1
1
  module Primes
2
2
  module Utils
3
- VERSION = "1.0.5"
3
+ VERSION = "1.0.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,51 +1,63 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: primes-utils
3
- version: !ruby/object:Gem::Version
4
- version: 1.0.5
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 6
10
+ version: 1.0.6
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Jabari Zakiya
8
- autorequire:
14
+ autorequire:
9
15
  bindir: exe
10
16
  cert_chain: []
11
- date: 2015-04-03 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2015-04-03 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
14
21
  name: bundler
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.9'
20
- requirement: !ruby/object:Gem::Requirement
21
- requirements:
22
- - - "~>"
23
- - !ruby/object:Gem::Version
24
- version: '1.9'
25
22
  prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 29
29
+ segments:
30
+ - 1
31
+ - 9
32
+ version: "1.9"
26
33
  type: :development
27
- - !ruby/object:Gem::Dependency
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
28
36
  name: rake
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '10.0'
34
- requirement: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - "~>"
37
- - !ruby/object:Gem::Version
38
- version: '10.0'
39
37
  prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 35
44
+ segments:
45
+ - 10
46
+ - 0
47
+ version: "10.0"
40
48
  type: :development
41
- description: 'Methods: prime?, primemr?, primes, nthprime/primenth, factors/prime_division'
42
- email:
49
+ version_requirements: *id002
50
+ description: "Methods: prime?, primemr?, primes, nthprime/primenth, factors/prime_division"
51
+ email:
43
52
  - jzakiya@gmail.com
44
53
  executables: []
54
+
45
55
  extensions: []
56
+
46
57
  extra_rdoc_files: []
47
- files:
48
- - ".gitignore"
58
+
59
+ files:
60
+ - .gitignore
49
61
  - CODE_OF_CONDUCT.md
50
62
  - Gemfile
51
63
  - README.md
@@ -57,26 +69,36 @@ files:
57
69
  - primes-utils.gemspec
58
70
  homepage: https://github.com/jzakiya/primes-utils
59
71
  licenses: []
60
- metadata: {}
61
- post_install_message:
72
+
73
+ post_install_message:
62
74
  rdoc_options: []
63
- require_paths:
75
+
76
+ require_paths:
64
77
  - lib
65
- required_ruby_version: !ruby/object:Gem::Requirement
66
- requirements:
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
67
81
  - - ">="
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- required_rubygems_version: !ruby/object:Gem::Requirement
71
- requirements:
82
+ - !ruby/object:Gem::Version
83
+ hash: 3
84
+ segments:
85
+ - 0
86
+ version: "0"
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
72
90
  - - ">="
73
- - !ruby/object:Gem::Version
74
- version: '0'
91
+ - !ruby/object:Gem::Version
92
+ hash: 3
93
+ segments:
94
+ - 0
95
+ version: "0"
75
96
  requirements: []
76
- rubyforge_project:
77
- rubygems_version: 2.4.5
78
- signing_key:
79
- specification_version: 4
97
+
98
+ rubyforge_project:
99
+ rubygems_version: 1.8.25
100
+ signing_key:
101
+ specification_version: 3
80
102
  summary: suite of extremely fast utility methods for testing and generating primes
81
103
  test_files: []
82
- has_rdoc:
104
+
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 18a37c98fc792d7d1aa0097b9e638866423ceeba
4
- data.tar.gz: b20fe5ee45d3d9f9d7d4ead6e5adc9e390cd066f
5
- SHA512:
6
- metadata.gz: 9c3cb7bfa4e8fe537b56fcf13dcfad505802637537612fe601b75a0214eb0727e80c23f008d7785b7a180a08d8d52841cb8e9de913c465a015d26561ed2e4172
7
- data.tar.gz: fafd267291075190e65fb8250f133c37002aa6a503ef0c230c83acc03c529136ff26689ce4afa99400ef7251d081895bb7e12149946d812641217c0356a210f4