reimann_foo 0.0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/reimann_foo.rb +110 -0
  3. metadata +45 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 31deb9a99b0f50a3a5c66fef964869c375481c80
4
+ data.tar.gz: 33c0613de1184d3116cfe999670bc572ba937c93
5
+ SHA512:
6
+ metadata.gz: 32ed51496048b94454a8837ab2fc2843f6fc983fdc16aa5c72bf0304837f640ff53d5525570dc46c07ed6a82c3fde7024e12bccefb9284d7f25a106fc407df13
7
+ data.tar.gz: 1122f5faa837116d31955419407d7f43af88ca7a4a770f9cd5fc086cd8f82c195a0a603909972808d4eba417b88412af575f725bbe4f36274bb3d0a681624a60
@@ -0,0 +1,110 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #reimann.rb
4
+
5
+ class Primes
6
+ attr_reader :num
7
+ attr_accessor :prime
8
+
9
+ def num=(num)
10
+ if num == 0
11
+ raise "integers only"
12
+ else
13
+ puts num.to_i
14
+ end
15
+ @num = num
16
+ end
17
+
18
+ def initialize(num)
19
+ @primes_lst = []
20
+ @num_lst = []
21
+ self.num = num
22
+ self.prime = false
23
+ end
24
+
25
+ def divide_for_primes
26
+ (2...num).each do |i|
27
+ if num % i == 0
28
+ @primes_lst << i
29
+ end
30
+ end
31
+ @primes_lst
32
+ end
33
+
34
+ def remove_evens
35
+ if num >= 2
36
+ @primes_lst << 2
37
+ end
38
+ (2..num).each do |i|
39
+ if i % 2 != 0 #if odd loop
40
+ @primes_lst << i
41
+ end
42
+ end
43
+ @primes_lst
44
+ end
45
+
46
+ def remove_odds
47
+ @num_lst = @primes_lst.reverse
48
+ @num_lst.each do |i|
49
+ @primes_lst.each do |j|
50
+ if i % j == 0 && i != j
51
+ @primes_lst.delete(i)
52
+ end
53
+ end
54
+ end
55
+ puts "#{num} = #{@primes_lst.size} primes. --> #{@primes_lst}"
56
+ @primes_lst
57
+ end
58
+
59
+ def is_prime
60
+ @primes_lst.empty? ? self.prime = true : prime
61
+ @primes_lst.empty? ? "prime." : "not prime.\nDividers are #{@primes_lst}."
62
+ end
63
+
64
+ def write
65
+ file_new = File.open('primes.txt', 'a+')
66
+ file_new.write("#{num}")
67
+ unless prime
68
+ file_new.puts(" is not prime")
69
+ file_new.puts("#{@primes_lst}")
70
+ else
71
+ file_new.write(" is prime\n")
72
+ file_new.close
73
+ end
74
+ end
75
+ end
76
+
77
+ go = true
78
+ while go
79
+ time0 = Time.now
80
+ print "enter num: ["
81
+ foo = gets.chomp.to_i
82
+
83
+ x = Primes.new(foo)
84
+ puts "1 if you want to find the primes for the RANGE -> (0 .. #{foo})"
85
+ puts "2 if you want to test if #{foo} is prime"
86
+ choice = gets.chomp.to_i
87
+ time1 = Time.now
88
+ if choice == 1
89
+ x.remove_evens
90
+ x.remove_odds
91
+ else
92
+ x.divide_for_primes
93
+ puts x.is_prime
94
+ end
95
+ time2 = Time.now
96
+ puts "overall time: #{(time2 - time0) * 10000} ms"
97
+ puts "calc time: #{(time2 - time1) * 10000} ms"
98
+ puts 'save? [y/n]'
99
+ choice = gets.chomp.downcase
100
+ if choice == 'y' || choice == 'yes' || choice == 'o' || choice == 'oui'
101
+ x.write
102
+ end
103
+ puts "try another number? [y/n]"
104
+ choice = gets.chomp.downcase
105
+ if choice == 'y' || choice == 'yes' || choice == 'o' || choice == 'oui'
106
+ next
107
+ else
108
+ go = false
109
+ end
110
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: reimann_foo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - foo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-01-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A tool to 1. find primes in a user defined integer range and 2. test
14
+ if a user supplied integer is prime
15
+ email: foo@yetispeak.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/reimann_foo.rb
21
+ homepage:
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.5.2.1
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: primes
45
+ test_files: []