Les Snippets

Connexion

Avoir le factoriel d'un nombre

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 19/10/2006 20:10:22 et initié par KiNdErMaXi [Liste]
Date de mise à jour : 22/03/2008 18:29:29
Vue : 28837
Catégorie(s) : Maths
Langages dispo pour ce code :
- VBA
- mIRC
- VB 2005, VB.NET 1.x
- C# 1.x, C# 2.x
- C# 1.x, C# 2.x
- VB6, VBA
- Python
- Javascript
- Delphi 5
- ActionScript Flash
- ObjectiveCaml
- C++
- Java
- C++
- VB 2005, VB 2008, VB.NET 1.x
- Scripts fu
- Tcl



Langage : VBA
Date ajout : 19/10/2006
Posté par KiNdErMaXi [Liste]
Sub Factoriel()
 Dim a As Integer, b As Integer, i As Integer
 a = InputBox("Entrez le nombre a tester")
 b = 1
  For i = 2 To a
   b = i * b
  Next
 MsgBox "Le factoriel de " & a & " est " & b
End Sub

Langage : mIRC
Date ajout : 19/10/2006
Posté par KiNdErMaXi [Liste]
alias Fact {
  var %i = 2, %b = 1
  while %i <= $1 { var %b = $calc(%i * %b) | inc %i }
  return %b
}
Remarque :
Utilisation sous forme d'identifieur $fact()
Langage : VB.NET 1.x , VB 2005
Date ajout : 25/10/2006
Posté par NHenry [Liste]
function Factorielle(byval pNb as integer) as integer
     If pNb=1 Then
        Return 1
     Else
        Return pNb*Factorielle(pNb-1)
     End If
 End Function
 
Langage : C# 1.x , C# 2.x
Date ajout : 15/11/2006
Posté par Bidou [Liste]
DateMAJ : 22/11/2006
// Remarque: Ce code est assez élégant (1 ligne) mais n'est pas le 
// plus performant (récursion oblige). Pour les petits nombres cependant, 
// il est plus rapide qu'une boucle while (d'après mes testes, jusqu'à une
// valeur de 1000 environ)
private long Factoriel(int nb) 
{
  return nb > 1 ? nb * this.Factoriel(nb - 1) : nb; 
}


Remarque :
On pourrait mettre un type ulong plutôt que long, mais alors la méthode ne serait pas CLS Compliant.
Langage : C# 1.x , C# 2.x
Date ajout : 17/11/2006
Posté par Malkuth [Liste]
DateMAJ : 21/11/2006

public long Factor(int nb)
{

     long Res = 1;
     while(nb > 1)Res *= nb--;

     return Res;

}

Remarque :
La méthode par récursion est à bannir, imaginez un Factor(1000000) ca veut dire 1000000 d'appel à la fonction Factor, donc la pile prend un méchant coup (StackOverflowException). Sans parler de ca, l'appel d'une fonction prend toujours du temps.
Langage : VB6 , VBA
Date ajout : 18/11/2006
Posté par PCPT [Liste]
Function GetFactoriel(lVal As LongAs Long
    GetFactoriel = 1
    Dim i&
    For i = To lVal
        GetFactoriel = i * GetFactoriel
    Next i
End Function

Langage : Python
Date ajout : 26/12/2006
Posté par lepecheur [Liste]
def Fact(nb):
    res=1
    for i in range(1, nb+1):
        res *=i
    return res
Langage : Javascript
Date ajout : 03/01/2007
Posté par roro06 [Liste]
function fact(n)
    {
    return (n==1)?1:n*fact(n-1);
    }

Langage : Delphi 5
Date ajout : 06/02/2007
Posté par f0xi [Liste]
DateMAJ : 25/10/2007

function FFact(const N : integer { max = 1754}) : extended;
var i : integer;
begin
  result := 1;
  for i := 1 to N do
      result := result * i;
end;
Langage : ActionScript Flash
Date ajout : 21/05/2007
Posté par shubenka [Liste]
function factoriel(num:Number){
    return num > 1 ? num*factoriel(num-1) : num;
}
Langage : ObjectiveCaml
Date ajout : 02/06/2007
Posté par Cacophrene [Liste]
(* Récursive terminale. Exemple d'utilisation : factorielle 5 donne 120 *)
let factorielle =
    let rec loop result = function
        | 0 -> result
        | n -> loop (n * result) (n - 1) 
    in loop 1
Langage : C++
Date ajout : 04/06/2007
Posté par coucou747 [Liste]
template <class T, int N>
class Math{
    public :
        static T factorielle(){
            T a=N;
            return Math<T, N-1>::factorielle()*a;
        }
};
template <class T>
class Math<T, 0>{
    public :
        static T factorielle(){
            T a=1;
            return a;
        }
};

Langage : Java
Date ajout : 10/02/2008
Posté par vincjava [Liste]
public static long Fact(int a) {         // méthode propre
    long b=1;
    for(int i=1;i<=a;i++) { b = b*i; }
    return b;
}
public static long Fact2(int nb) {       // méthode moins propre
    return nb > 1 ? nb * Fact2(nb - 1) : nb;
}
public static void main(String[ ] args) { System.out.println(Fact(20)); }

Remarque :
20! est le plus grand factorielle qui peut être contenu dans un long
Langage : C++
Date ajout : 18/03/2008
Posté par yemissid [Liste]
DateMAJ : 22/03/2008
#include <iostream>
using namespace std;
#include <gmpxx.h>
typedef mpz_class Integer
 
Integer factoriel (Integer n)
{
    Integer i,b=1;
    
    for (i=1;i<=n;i++){
        b=b*i;
    }
    
    return b;
}
Remarque :
La classe gmp modelise les grands entiers.
Pour compiler n'oubliez pas d'utiliser la commande gmp.
Langage : VB.NET 1.x , VB 2005 , VB 2008
Date ajout : 02/07/2008
Posté par FREMYCOMPANY [Liste]
    ' Methode iterative (performante)
    Public Function Fact1(ByVal I As Integer) As UInt64
        Fact1 = 1
        For X = 2 To I : Fact1 *= X : Next
    End Function
    ' Methode récursive (moins performante)
    Public Function Fact2(ByVal I As Integer) As UInt64
        If I < 1 Then Return 1
        Return I * Fact2(I - 1)
    End Function
    ' Methode à cache de données (hyper performante)
    Public Function Fact3(ByVal I As Integer) As UInt64
        Static Cache As UInt64() = {1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600, 6227020800, 87178291200, 1307674368000, 20922789888000, 355687428096000, 6402373705728000, 121645100408832000, 2432902008176640000}
        If I < 0 Then Return 1
        If I < 21 Then Return Cache(I)
        Fact3 = Cache(20)
        For X As Integer = 21 To I
            Fact3 *= X
        Next
    End Function


Remarque :
Proposition de trois méthodes de calculs de la factorielle
La troisième est celle qui doit être utilisée si les performances sont recherchées.
Langage : Scripts fu
Date ajout : 25/10/2008
Posté par coucou747 [Liste]
(define (factorielle-iter n acc) (if (= n 0) acc (factorielle-iter (- n 1) (* n acc))))
(define (factorielle n) (factorielle-iter n 1))
Langage : Tcl
Date ajout : 16/07/2009
Posté par gersoo [Liste]
proc ! n {expr {$n<2 ? 1: $n*[! [incr n -1]]}}



Snippets en rapport avec : Maths, Nombre, Fact, Factoriel



Codes sources en rapport avec : Maths, Nombre, Fact, Factoriel

{Python} RACINE N-IÈME D'UN RÉEL A, PAR LA METHODE DE NEWTON-RAPHSON
Ce programme permet de determiner la racine n-ième (n>0) d'un nombre avec une précision remarquable....

{Python} NOMBRES DE KAPREKAR
Bonjour, J'ai trouvé un sujet intéressant en fesant les exercices du concours Prologin qui s'appe...

{Visual Basic, VB6, VB.NET, VB 2005} UN PETIT PROGRAMME DE CALCUL DES NOMBRE PREMIERS
qu'on vous appuiez sur calculer il va mettre les nombre dans un fichier texte dans C: appeler premie...

{Visual Basic, VB6, VB.NET, VB 2005} CHIFFRE EN LETTRE FONCTION
Une petite fonction simlpe pour transformer un chiffre en lettre. Exemple: "15193" >> dix ...

{C / C++ / C++.NET} TRANSFORMER UN ENTIER EN DEUX NOMBRES COMPOSÉ DES MEMES CHIFFRES ORDONNÉS PAR ORDRE CROISSANT ET DÉCROISSANT
Programme permettant de transformer un nombre en deux nombres composés des mêmes chiffres ordonnés d...

{Visual Basic, VB6, VB.NET, VB 2005} CONVERSION D'UN NOMBRE EN "PACKED NUMBER", ET INVERSEMENT
Fonction permettant de convertir un nombre (entier ou décimal, positif ou négatif) en nombre packé (...

{C / C++ / C++.NET} FACTORISATION D'UN ENTIER EN PRODUIT DE NOMBRES PREMIERS AVEC UNE FONCTION RÉCURSIVE
Ce programme affiche les facteurs premiers composant le nombre entré en paramètre, grâce à un algori...

{C / C++ / C++.NET} [DEV-C++] CALCUL DE LA RACINE CARRÉE D'UN RÉEL
Cette source permet de calculer une racine carrée par la méthode de Newton avec une approximation pa...

{C / C++ / C++.NET} CONVERTISSEUR NOMBRE ARABE => NOMBRE ROMAIN (1 À 4999)
Convertisseur de nombre arabe en nombre romain (de 1 à 4999). Aucune bibliothèque mathématique ut...

{C / C++ / C++.NET} MULTIPLICATIONS: PETIT EXERCICE DE MATHS
Ce programme très simple vous demande de trouver le produit d'une multiplication au hasard, compte l...