begin process at 2010 07 29 15:55:04
  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é :2 992 / 36

Auteur : Julien39

Ecrire un message privé
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

CALCUL LIST DE NOMBRES PREMIERS par White541
TROUVER TOUT LES QUADRILATÉRES POSSIBLES AVEC N POINTS ALEAT... par Buenol
Source avec Zip GÉNÉRATION D'UN LABYRINTHE AVEC RECHERCHE DU CHEMIN LE PLUS ... par mehdicherti
Source avec Zip Source avec une capture DIVISIONS AVEC PRÉCISION RÉGLABLE par Clempython
Source avec Zip Source avec une capture LE CALCULATOR DE RAYGOLD VERSION 3.1 par raygold

 Sources en rapport avec celle ci

DESSIN TURTLE par lucky84

Commentaires et avis

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

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

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

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

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

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 : 0,764 sec (4)

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