alpha-math 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []