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 : 24129
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



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))

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

{Delphi} GÉNÉRATEUR DE NOMBRES PSEUDO-ALÉATOIRES
Bonjour, voici un algorithme de génération de nombres pseudo-aléatoires, basé sur l'algorithme de ch...

{C / C++ / C++.NET} RESOLUTION DE SYSTEME LINEAIRE PAR LA METHODE DU GRADIENT CONJUGUE
ce post implemente la resolution des systemes lineaires du type Ax = b par la methode du gradient co...

{Python} PIVOT DE GAUSS
Ce script permet d'effectuer un pivot de Gauss en ligne (ou en colonne avec la transposée). Il in...

{Delphi} PACKAGE HARMONY
Ce package est un compromis entre Microsoft et la VCL... Il définit des classes de bases utiles (...

{Javascript / DHTML} TROUVER LES FACTEURS D'UN NOMBRE
Un petit script utile qui va vous permettre de trouver les facteurs d'un nombre. Il peut trouver les...

{Delphi} CALCULATRICE POUR POËTES
Cette calculatrice s'appelle Eunice (Encore Une Nième Insipide Calculatrice pour Enfants !). E...