Advertisement
Guest User

Untitled

a guest
Apr 21st, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.77 KB | None | 0 0
  1. def generate_k_type_1(n)
  2.     k = Array.new
  3.     divisor = 2
  4.     new_k = n
  5.  
  6.     while new_k != 1
  7.       new_k = (n / divisor).floor
  8.  
  9.       divisor *= 2
  10.       k.push(new_k)
  11.     end
  12.  
  13.     k
  14.   end
  15.  
  16.   def generate_k_type_2(n)
  17.     k = Array.new
  18.     power = 1
  19.     max = n / 3
  20.  
  21.     while true
  22.       new_k = (3 ** power - 1) / 2
  23.       power += 1
  24.  
  25.       if new_k <= max
  26.         k.push(new_k)
  27.         next
  28.       end
  29.  
  30.       break
  31.     end
  32.  
  33.     k.reverse
  34.   end
  35.  
  36.   def generate_k_type_3(n)
  37.     k = Array.new
  38.     max_r = Math.log(n, 2).floor
  39.     max_s = Math.log(n, 3).floor
  40.  
  41.     for r in 0..max_r
  42.       for s in 0..max_s
  43.         new_k = (2 ** r) * (3 ** s)
  44.  
  45.         if new_k < n
  46.           k.push(new_k)
  47.         end
  48.       end
  49.     end
  50.  
  51.     k.sort.reverse
  52.   end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement