C++ > Calcul euler

TitreCalcul euler
Postée le09-02-2011
Affichée378
Mini-lien
Description

Code source d'exemple de calcul euler

EtatNe contient pas d'erreurs. Ne contient pas d'erreurs.
Code d'insertion
Options
Afficher les numéros de lignes  Mettre la source en plein ecran  Selectionner la source  Partager sur Facebook 
Téléchargement Telecharger en format txt  Telecharger en format pdf  Telecharger en format cpp
Plein ecran
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

double suite();
double arrondir();

int main(int argc, char **argv)
{
    int n; double sn,val;

    n = atoi(argv[1]); /* récuperation du paramètre n donné en argument */
    printf("n=%d\n",n);

    sn = suite(n-1); /* calcul de s(n-1) */
    val=arrondir(sn-log(n),n); /* on arrondie v(n)=s(n-1)-ln(n) à 1/n */

   if(sn-log(n) > val) /* on recupere la seule valeur comprise en v(n) et u(n) à 1/n près */
        val+=(double)1/n;

    printf("%.10f << constante calculee\n",val);
    printf("0,5772156649015328606065120 << constante sur wikipedia\n");

    return 0;
}

double suite(int n)
{
    int i; double sn=0;

    if(n==0)
        return 0;

    for(i=1; i<=n; ++i)
        sn=sn+(double)1/i;

    return sn;
}

double arrondir(double val, int n)
{
    /* pour arrondir un nombre à 1/n */
    val*=n;
    val= round(val);
    val/=n;
    return val;
}

/*
EXEMPLE DE SORTIES :

>> euler.exe 10000
n=10000
0.5772000000 << constante calculee
0,5772156649015328606065120 << constante sur wikipedia


>> euler.exe 1000000000
[sortie]
n=1000000000
0.5772156650 << constante calculee
0,5772156649015328606065120 << constante sur wikipedia

TEMPS D'EXECUTION  :

n=10^4 -> 0.016s
n=10^9 -> 8.978s
*/