epicours/Algo/B2/Exercises/Repetitive tutorial.md

2.1 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 ValueError("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