Give a tight bound of the nearest runtime complexity class for each of the following code fragments in Big-Oh notation, in terms of the variable *N*.
In other words, write the code's growth rate as *N* grows.
Write a simple expression that gives only a power of *N* using a caret `^`

character for exponentiation, such as `O(N^2)`

to represent O(*N*^{2}) or `O(log N)`

to represent O(log_{2} *N*).
Do not write an exact calculation of the runtime such as O(2*N*^{3} + 4*N* + 14).

a)
sum = 0
j = 1
while j <= n:
sum += 1
j *= 2
print(sum)

b)
sum = 0
for j in range(1, n):
sum += 1
if j % 2 == 0:
sum += 1
print(sum)

c)
sum = 0
for i in range(1, n * 2 + 1):
for j in range(1, n + 1):
sum += 1
for j in range(1, 100):
sum += 1
sum += 1

d)
sum = 0
for i in range(1, n + 1):
for j in range(1, i + 1, 2):
sum += 4
for k in range(-50, -2):
sum += 1