begin process at 2012 02 05 01:16:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Math & Algorithmes

 > CALCUL DU CARRE PAR LA MÉTHODE DE L'ABAQUE (ITÉRATIF ET RECURSIF)

CALCUL DU CARRE PAR LA MÉTHODE DE L'ABAQUE (ITÉRATIF ET RECURSIF)


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Math & Algorithmes Classé sous :abaque, carré, recursif Niveau :Débutant Date de création :23/11/2008 Vu / téléchargé :4 862 / 41

Auteur : Julien39

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Ces fonctions utilisent la méthode de l'abaque pour calculer les carrés des nombres. Cette méthode est expliquée en commentaire au début de code.
Une fonction est itérative l'autre récursive.

La méthode de l'abaque est une méthode pour calculer les carrés rapidement de tête, elle n'est pas adaptée à l'informatique.

Source

  • # Codé par Marion -----------------------------------------------------------
  • # Carré par la méthode de l'abaque ##########################################
  • # #
  • # Description de la méthode #################################################
  • # La méthode dite de l'abaque est utilisée pour calculer de tête les carrés #
  • # des nombres entiers. #
  • # #
  • # Tout repose sur une propriété des nombres se terminant par 5: #
  • # pour calculer de tête le carré d'un nombre se terminant par 5. #
  • # On prend le nombre de dizaines multiplié par son successeur. #
  • # Cela donne le nombre de centaines du résultat. #
  • # On écrit alors 25 à droite du nombre de centaines et c'est fini. #
  • # #
  • # Exemple : 45² = ? #
  • # 4*5 = 4*(4+1) = 20 #
  • # 20 25 -> 2025 donc 45² = 2025 #
  • # #
  • # On sait maintenant comment calculer tout le carrés des nombres se #
  • # terminant par 5. Pour calculer tout les carrés des nombres, il suffit #
  • # d'utiliser la formule (n+1)² = n² + 2n + 1 #
  • # #
  • # Exemple 47² = ? #
  • # 47² = (46 + 1)² = 46² + 2*46 + 1 #
  • # 47² = (45 +1)² + 2*46 + 1 #
  • # 47² = 45² + 2*45 + 1 + 2*46 + 1 #
  • # #
  • # Remarque : Cette méthode est mauvaise en informatique, trop lente. Par #
  • # Contre, pour le calcul de tête, elle est très performante. #
  • #############################################################################
  • # Fonction qui permet de calculer le carré des nombres se terminant par 5 ###
  • # #
  • def carre_5(n): #
  • d=(n-5)/10 #
  • # d est le nombre de dizaines #
  • c=d*(d+1) #
  • nb=c*100+25 #
  • return nb #
  • # #
  • #############################################################################
  • # Fonction carré itérative ##################################################
  • # #
  • def carre_it(n): #
  • m=n #
  • r=0 #
  • d=n%10 #
  • # d est le dernier chiffre #
  • if d<5 : #
  • d=d+10 #
  • for i in range(1,d-4): #
  • m=m-1 #
  • r=r+2*m+1 #
  • r=r+carre_5(m) #
  • return r #
  • # #
  • #############################################################################
  • # Fonction carré recursive ##################################################
  • # #
  • def abaque_recur(n): #
  • d=n%10 #
  • if d==5: #
  • resultat=carre_5(n) #
  • elif d<>5: #
  • resultat=abaque_recur(n-1)+2*(n-1)+1 #
  • return resultat #
  • # #
  • #############################################################################
# Codé par Marion -----------------------------------------------------------

# Carré par la méthode de l'abaque ##########################################
#                                                                           #
# Description de la méthode #################################################
# La méthode dite de l'abaque est utilisée pour calculer de tête les carrés #
# des nombres entiers.                                                      #
#                                                                           #
# Tout repose sur une propriété des nombres se terminant par 5:             #
# pour calculer de tête le carré d'un nombre se terminant par 5.            #
# On prend le nombre de dizaines multiplié par son successeur.              #
# Cela donne le nombre de centaines du résultat.                            #
# On écrit alors 25 à droite du nombre de centaines et c'est fini.          #
#                                                                           #
# Exemple : 45² = ?                                                         #
# 4*5 = 4*(4+1) = 20                                                        #
# 20 25 -> 2025 donc 45² = 2025                                             #
#                                                                           #
# On sait maintenant comment calculer tout le carrés des nombres se         #
# terminant par 5. Pour calculer tout les carrés des nombres, il suffit     #
# d'utiliser la formule (n+1)² = n² + 2n + 1                                #
#                                                                           #
# Exemple 47² = ?                                                           #
# 47² = (46 + 1)² = 46² + 2*46 + 1                                          #
# 47² = (45 +1)² + 2*46 + 1                                                 #
# 47² = 45² + 2*45 + 1 +  2*46 + 1                                          #
#                                                                           #
# Remarque : Cette méthode est mauvaise en informatique, trop lente. Par    #
# Contre, pour le calcul de tête, elle est très performante.                #
#############################################################################

                                                                           
# Fonction qui permet de calculer le carré des nombres se terminant par 5 ###
#                                                                           #
def carre_5(n):                                                             #
    d=(n-5)/10                                                              #
    # d est le nombre de dizaines                                           #
    c=d*(d+1)                                                               #
    nb=c*100+25                                                             #
    return nb                                                               #
#                                                                           #
#############################################################################

# Fonction carré itérative ##################################################
#                                                                           #
def carre_it(n):                                                            #
    m=n                                                                     #
    r=0                                                                     #
    d=n%10                                                                  #
    # d est le dernier chiffre                                              #
    if d<5 :                                                                #
        d=d+10                                                              #
    for i in range(1,d-4):                                                  #
        m=m-1                                                               #
        r=r+2*m+1                                                           #
    r=r+carre_5(m)                                                          #
    return r                                                                #
#                                                                           #
#############################################################################


# Fonction carré recursive ##################################################
#                                                                           #        
def abaque_recur(n):                                                        #
    d=n%10                                                                  #
    if d==5:                                                                #
        resultat=carre_5(n)                                                 #
    elif d<>5:                                                              #
        resultat=abaque_recur(n-1)+2*(n-1)+1                                #
    return resultat                                                         #
#                                                                           #
#############################################################################




 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture TURTLE, OPÉRATIONS DE BASE ET FRACTALES
Source avec Zip NOMBRES PREMIERS, LISTES, NOMBRES PREMIERS JUMEAUX, CONJECTU...

 Sources de la même categorie

Source avec Zip BASE64 ENCRYPT/DECRYPT PYTHON BY MAXOU56800 par Maxou56800
Source avec Zip Source avec une capture TRIANGULATION par mecrosoft
Source avec Zip Source avec une capture COURBE DE BEZIER par mecrosoft
Source avec Zip Source avec une capture CALCUL D'AIRE D'UN TRIANGLE [INTERFACE GRAPHIQUE] par SeventhSon
Source avec Zip Source avec une capture SUITE DE FIBONACCI [INTERFACE GRAPHIQUE] par SeventhSon

 Sources en rapport avec celle ci

DESSIN TURTLE par lucky84

Commentaires et avis

Commentaire de coucou747 le 23/11/2008 16:38:42 administrateur CS

en info :

47 ^2 = 4^2*100 + 2*4*10*2 + 2^2

avec les decalages de bits, t'arrvives a faire un truc rapide

Commentaire de Julien39 le 23/11/2008 23:58:41 administrateur CS

ok merci mais ici, le but n'était pas de faire un truc rapide, je l'ai dit en commentaire sur cette source, cette méthode n'est pas adaptée à l'informatique, par contre c'est un bon exemple d'algorithme.

Commentaire de xeolin le 27/11/2008 12:22:19 10/10

C'est bien de prendre l'habitude d'utiliser :

else :
au lieu de :
elif d<>5:

L.69

Ca permet d'eviter un calcul par l'ordi inutile.

Sinon c'est un tres bon algorythme même su tu devrais essayer de l'optimiser.

9/10

Xeolin

Commentaire de marcelolipi le 02/12/2008 11:20:10

salut
en info :
47 ^2 = 4^2*100 + 2*4*10*2 + 2^2

j'aimerais savoir comment ca se passe car je parvient pas a trouver

Commentaire de coucou747 le 02/12/2008 11:36:52 administrateur CS

hum... dsl

47 = 40 + 7 = 4 * 10 + 7

47^2 = [ (4*10) + 7  ] ^2
47^2 = (4*10)^2 + 2*7*4*10 + 7^2
47^2 = 4^2 * 100 + 2 * 7 * 4 * 10 + 7^2

une erreur d'inatention, j'avais probablement 42 en tete quand j'ai ecrit cette ligne...

quand on calcule de tete un carre a deux chiffres, c'est plus interessant de faire :
47 = 50 - 3 = 2500 - 300 + 9 = 2209

Commentaire de aera group le 31/08/2009 10:50:21

J'aime bien :p
Je connaissais cette méthode facile a démonter :

Soit _ l'opérateur qui a tout nombre entier positif a et b accole a à b
Par exemple 13_9 = 139
Plus Mathématiquement si on pose len(a) la propriété qui renvoi le nombre de chiffre que compose le nombre a, on peut traduire l'opérateur ainsi :
a_b = a*10^len(b) + b
Par exemple 2_12 = 2*10*len(12) + 12 = 2*10^2 + 12 = 2*100 + 12 = 212

On pose n un nombre entier positif, alors :
(n_5)² = (n*10 + 5)² = (n*10)² + 2*n*10*5 + 5² = n²*100 + n*100 + 25 = (n²+n)*100 + 25 = (n(1+n))*100 + 25 = (n * (n+1))_25

CQFD

On retrouve bien ton exemple 45² = ?
4*5 = 4*(4+1) = 20
45² = 20_25

Voila c'est amusant comme code, et c'est bien codé donc 9

Commentaire de aera group le 31/08/2009 10:52:21 9/10

J'ai oublier la note :p
Cette méthode fonctionne même si n = 0

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,902 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales