begin process at 2010 03 17 23:05:01
  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 569 / 35

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

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 2 par raygold
Source avec Zip ALGORITHMIME GENETIQUE : PROBLEME DU VOYAGEUR DE COMMERCE par mehdicherti
Source avec Zip PROBLEME DES HUIT DAMES par mehdicherti

 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


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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