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 : 30999
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 ...

{JAVA / J2EE} RC4 BY SKYNET
RC4 est un algorithme de chiffrement à flot conçu en 1987 par Ronald Rivest, l'un des inventeurs du ...

{Visual Basic, VB6, VB.NET, VB 2005} CODAGE ET DÉCODAGE DE NOMBRE OU DE CHIFFRE
cet source permet au débutant de comprendre la cryptographie, c'est à dire de rendre un code incompr...

{Delphi} ALPHA DE CRONBACH (INDICE UTILISÉ EN PSYCHO)
Un petit logiciel écrit pour une amie qui avait un mémoire de psycho à faire. C'est un utilitaire...

{Delphi} EUROM V1.0.0
Un générateur de nombres aléatoires pour l'euro-millions. J'avais encore envie de jouer avec les no...

{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é (...