mirror of
https://github.com/Fare-spec/cours.git
synced 2025-12-11 12:20:39 +00:00
Add university content
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
def racine(n):
|
||||
def aux(gauche, droite):
|
||||
|
||||
if gauche > droite:
|
||||
return droite
|
||||
|
||||
milieu = (gauche + droite) // 2
|
||||
|
||||
if milieu * milieu == n:
|
||||
return milieu
|
||||
|
||||
elif milieu * milieu > n:
|
||||
return aux(gauche, milieu - 1)
|
||||
|
||||
else:
|
||||
return aux(milieu + 1, droite)
|
||||
|
||||
return aux(0, n)
|
||||
|
||||
|
||||
def racine_decimale(n, precision=1e-6):
|
||||
|
||||
def aux(gauche, droite):
|
||||
milieu = (gauche + droite) / 2
|
||||
|
||||
if droite - gauche < precision:
|
||||
return milieu
|
||||
|
||||
if milieu * milieu == n:
|
||||
return milieu
|
||||
|
||||
elif milieu * milieu < n:
|
||||
return aux(milieu, droite)
|
||||
|
||||
else:
|
||||
return aux(gauche, milieu)
|
||||
|
||||
partie_entiere = racine(n)
|
||||
|
||||
return aux(partie_entiere, partie_entiere + 1)
|
||||
75
high-school/recursivite/exercice_MJoannic/sqrt/main.py
Normal file
75
high-school/recursivite/exercice_MJoannic/sqrt/main.py
Normal file
@@ -0,0 +1,75 @@
|
||||
### D'après WIKIPEDIA
|
||||
def racine_raphson(number: float, precision: float) -> float:
|
||||
assert number > 0, "La racine du nombre n'est pas réelle."
|
||||
|
||||
y = (number / 3) + 1
|
||||
diff = precision + 1
|
||||
|
||||
while diff > precision:
|
||||
y_next = (y + number / y) / 2.0
|
||||
diff = abs(y_next - y)
|
||||
y = y_next
|
||||
|
||||
return y
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(racine_raphson(36, 0.000000000000001) ** 2 == 36)
|
||||
|
||||
|
||||
def dichotomie(
|
||||
liste: list[any],
|
||||
element: any,
|
||||
start: int = 0,
|
||||
end: int = None,
|
||||
bypass_sorting: bool = False,
|
||||
) -> int:
|
||||
"""Recherche la partie entière de la racine carrée d'un nombre en utilisant une recherche dichotomique.
|
||||
|
||||
Args:
|
||||
liste (list[any]): Liste de nombres simulée pour la recherche.
|
||||
element (any): Le nombre dont on cherche la racine carrée entière.
|
||||
start (int, optional): Index de départ. Defaults to 0.
|
||||
end (int, optional): Index de fin. Defaults to None.
|
||||
bypass_sorting (bool, optional): Ignoré dans cette version.
|
||||
|
||||
Returns:
|
||||
int: La partie entière de la racine carrée.
|
||||
"""
|
||||
if end is None:
|
||||
end = len(liste) - 1
|
||||
|
||||
if start > end:
|
||||
return end # Retourne la partie entière trouvée.
|
||||
|
||||
middle = (start + end) // 2
|
||||
squared = middle * middle
|
||||
|
||||
if squared == element:
|
||||
return middle
|
||||
elif squared < element:
|
||||
return dichotomie(liste, element, middle + 1, end, bypass_sorting=True)
|
||||
else:
|
||||
return dichotomie(liste, element, start, middle - 1, bypass_sorting=True)
|
||||
|
||||
|
||||
def racine_dich(number: int) -> int:
|
||||
"""
|
||||
Calcul de la partie entière de la racine carrée d'un nombre entier.
|
||||
|
||||
Args:
|
||||
number (int): Nombre dont on cherche la racine carrée.
|
||||
|
||||
Returns:
|
||||
int: La partie entière de la racine carrée.
|
||||
"""
|
||||
assert number >= 0, "Le nombre doit être positif ou nul."
|
||||
liste = [i for i in range(number // 2 + 2)] # Simule une "liste" pour la dichotomie
|
||||
return dichotomie(liste, number)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(racine_dich(36)) # Retourne 6
|
||||
print(racine_dich(20)) # Retourne 4
|
||||
print(racine_dich(0)) # Retourne 0
|
||||
print(racine_dich(1)) # Retourne 1
|
||||
Reference in New Issue
Block a user