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.
- checksums.yaml +7 -0
- data/lib/alpha_math.rb +63 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -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
|
data/lib/alpha_math.rb
ADDED
@@ -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: []
|