alpha-math 0.0.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 (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/alpha_math.rb +63 -0
  3. metadata +45 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9052f005b8bd96285dbe8fd9568b35ef994e641bd7a263d3da8cac783bb86f74
4
+ data.tar.gz: 64e117f7f83875a34488d4104f74fd3d673225f33c6149e558b53956f0db1406
5
+ SHA512:
6
+ metadata.gz: '09bff5d6a8eecc8e1ef71c59b6308e4f8139d62236a7d7a5aaa8a16ca1e007e93ada407757c022234fded3a8059eb5ce0215a8ac2571cde1b1c34bac472d2750'
7
+ data.tar.gz: dd7bc1ce3ae93c1e4eef4c34b614041ee21ce92b766e3c82e9d70ebc6c3da6191d619d37f831e87862843f881a167c0e0a4c95891c4263f736c4253864a153b4
@@ -0,0 +1,63 @@
1
+ module AlphaMath
2
+
3
+ def self.decomposition(number, factors = [])
4
+ return factors if number == 1
5
+ (2..number).each do |divisor|
6
+ divmod = number.divmod(divisor)
7
+ quotient, rest = divmod.first, divmod.last
8
+ if rest.zero?
9
+ factors << divisor
10
+ return decomposition(quotient, factors)
11
+ end
12
+ end
13
+ end
14
+
15
+ def self.digital_root(number)
16
+ return 0 if number == 0
17
+ rest = number.divmod(9).last
18
+ rest == 0 ? 9 : rest
19
+ end
20
+
21
+ def self.divisors_of(number)
22
+ (1..number / 2).select {|divisor| number.divmod(divisor).last.zero?} << number
23
+ end
24
+
25
+ def self.magnitude(number)
26
+ return -Float::INFINITY if number == 0
27
+ decimal, power = ("%e" % number.abs).split('e')
28
+ decimal, power = Float(decimal), Integer(power)
29
+ decimal < 5 ? power : power + 1
30
+ end
31
+
32
+ def self.power_of_2?(number)
33
+ number.to_s(2).count('1') == 1
34
+ end
35
+
36
+ def self.prime?(number)
37
+ return false if number < 2
38
+ (2..Math.sqrt(number).to_i).each do |divisor|
39
+ return false if number.divmod(divisor).last.zero?
40
+ end
41
+ end
42
+
43
+ def self.primorial(number)
44
+ primes = []
45
+ (2...Float::INFINITY).each do |value|
46
+ if primes.count < number
47
+ primes << value if prime?(value)
48
+ else
49
+ return primes.inject(:*)
50
+ end
51
+ end
52
+ end
53
+
54
+ def self.trailing_zeros_of_factorial(number)
55
+ zeros, multiple = 0, 5
56
+ while (count = number / multiple) != 0
57
+ zeros += count
58
+ multiple *= 5
59
+ end
60
+ zeros
61
+ end
62
+
63
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alpha-math
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Mauro Quaglia
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-09-24 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: The alpha-math is a Ruby gem which allows you to solve some problems
14
+ related to the numbers.
15
+ email: mauroquaglia@libero.it
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/alpha_math.rb
21
+ homepage: https://github.com/MauroQuaglia/alpha-math/wiki
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.7.9
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Some tools on numbers.
45
+ test_files: []