2.4 KiB
2.4 KiB
Exercise 1.1
def zorglub(n: int) -> int:
j = 1
k = 0
i = 1
while i <= n:
j = i * j
k = j + k
i = i + 1
return k
The function return the sum of the factorial of n
Exercise 1.2
def multiplication(x: int, y: int) -> int:
result = 0
while y > 0:
m += x
y -= 1
return result
def multiplication2(x: int, y: int) -> int: # Thanks Hugo :p
if y < 0:
y = -y
if x < 0:
return multiplication(-x, y)
return -multiplication(x, y)
else
return multiplication(x, y)
def productZ(x, y):
pos = True
if x < 0:
x = -x
pos = False
if y < 0:
y = -y
pos = not pos
m = multiplication(x, y)
if not pos:
m = -m
return m
Exercise 1.3
def exponetial(x: int, n: int) -> int:
result = 0
while n > 0:
m *= x
n -= 1
return result
def power(x, n):
if x == 0;
if n == 0:
raise Exception("0 power 0 undefinded")
else:
return 0
elif x == 1:
return 1
elif x == -1:
return (n%2)*(-2) + 1
else:
res = 1
while n > 0:
res *= x
n -= 1
return res
Exercise 1.4
def fibo(n):
prev = 1 #f0
cur = 1 #f1
while n> 1:
(prev, cur) = (cur, prev+cur)
n -= 1
return cur
# OR
def fibo(n):
prev = 1
cur = 1
i = 1
while i < n:
prev += cur
cur += prev
i += 2
if i == n: # i % 2 == 1
return cur
else:
return prev
Exercise 1.5
def my_sum(n: int) -> int:
s = 0
i = 1
while i <= n:
s += u(i)
i += 1
return s
# OR
def my_sum(n: int) -> int:
s = 0
while n > 0:
s += u(n)
n -= 1
return s
def my_sum(n: int) -> int:
ss = 0
i = 1
while i <= n:
si = 0
j = 1
while j <= i:
si += u(j)
j += 1
ss += si
i += 1
return ss
# OR
def my_sum(n: int) -> int:
ss = 0
i = 1
while i <= n:
j = 1
while j <= o:
ss += u(j)
j += 1
i += 1
return ss
# OR
def mu_sum(n: int) -> int:
ss = 0
si = 0
i = 1
while i <= n:
si += u(i)
ss += si
i += 1
return ss
Exercise 2.1
def euclid(a, b):
if (a <= b):
raise Exception("a must be superior to b")
r = 1
while r != 0:
oldr = r
q = a//b
r = a%b
a = b
b = r
return oldr
# OR
def euclid(a, b):
while b != 0:
(a, b) = (b, a%b)
return a
Exercise 2.2
def mirror(n: int) -> int;
res = 0
while n != 0:
res = res * 10 + n % 10
n //= 10
return res
Exercise 3.3
def quotient(a: int, b: int) -> int:
q = 0
if (a < b):
(a, b) = (b, a)
while (a-b) >= 0:
q += 1
a -= b
return q