begin process at 2012 05 27 13:15:08
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > LES 2400 PREMIÈRES DÉCIMALES DE PI

LES 2400 PREMIÈRES DÉCIMALES DE PI


 Information sur la source

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :nombre, pi, décimales Niveau :Débutant Date de création :08/12/2005 Vu :9 882

Auteur : euclidoscope

Ecrire un message privé
Site perso
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

Ce programme n'est pas de moi, mais il est didactique et à mon sens, le plus court possible pour calculer Pi. Y'en a qui sont fort !!!

Source

  • #include <stdio.h>
  • #include <conio.h>
  • long a=10000,b,c=8400,d,e,f[8401],g;
  • void main()
  • {for(;b-c;)f[b++]=a/5;for(;d=0,g=c*2;
  • c-=14,printf("%.4d",e+d/a),e=d%a)for(b=c;
  • d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);getch();}
  • /*
  • //plus digestement :)
  • int i, j;
  • long resultat, retenue=0, tmp, Tableau[8401];
  • main()
  • {
  • for (i=0;i<=8400;i++) Tableau[i]=2000;
  • for (j=600;j>0;j--)
  • {
  • resultat=0;
  • for (i=j*14;i>0;i--)
  • {
  • tmp = (resultat*i + Tableau[i]*10000);
  • resultat=tmp/(2*i-1);
  • Tableau[i]=tmp%(2*i-1);
  • }
  • printf("%.4d",retenue+resultat/10000);
  • retenue=resultat%10000;
  • }
  • }
  • */
#include <stdio.h>
#include <conio.h>
long a=10000,b,c=8400,d,e,f[8401],g;
void main()
{for(;b-c;)f[b++]=a/5;for(;d=0,g=c*2;
c-=14,printf("%.4d",e+d/a),e=d%a)for(b=c;
d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);getch();}


/*
//plus digestement :)
int i, j;
long resultat, retenue=0, tmp, Tableau[8401];

main()
{
  for (i=0;i<=8400;i++) Tableau[i]=2000;
    for (j=600;j>0;j--)
      {
       resultat=0;
       for (i=j*14;i>0;i--)
         {
          tmp = (resultat*i + Tableau[i]*10000);
          resultat=tmp/(2*i-1);
          Tableau[i]=tmp%(2*i-1);
         }
       printf("%.4d",retenue+resultat/10000);
       retenue=resultat%10000;
      }
}
*/

 Conclusion

Il se compile sur toute plate-forme. En passant, j'aimerais bien demander aux divers auteurs de préciser si leurs compiles c'est du Borland, du VC, du Linux, du Mac, etc.


 Sources du même auteur

Source avec Zip UN MICROSCOPE NUMÉRIQUE POUR REGARDER LES NOMBRES DANS TOUTE...

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture TROUVER LES NOMBRES PREMIERS INFÉRIEURS À UNE LIMITE DONNÉE par angrevol
Source avec Zip TRANSFORMER UN ENTIER EN DEUX NOMBRES COMPOSÉ DES MEMES CHIF... par thebroyeur
Source avec une capture FACTORISATION D'UN ENTIER EN PRODUIT DE NOMBRES PREMIERS AVE... par darkor
Source avec Zip CONVERTISSEUR NOMBRE ARABE => NOMBRE ROMAIN (1 À 4999) par Calli95
[C/C++] DÉTERMINER LES DIVISEURS D'UN NOMBRE AVEC DES INFORM... par soso62fr

Commentaires et avis

Commentaire de vecchio56 le 08/12/2005 01:20:58 administrateur CS

J'aimerais bien que t'explique le principe, parce que je suis bluffé!

Commentaire de euclidoscope le 08/12/2005 02:16:39

Si t'as pas peur d'avoir mal au crane avec des formules redoutables, je l'ai trouvé sur :
http://www.chez.com/cadin/public_html/pi.html

Mais les pires formules sont sur :
http://www.cecm.sfu.ca/organics/papers/borwein/paper/html/local/omlink9/html/node1.html

J'avais vu ce programme dans la revue "Pour la science" il y a quelques temps.
Je crois que l'auteur de ce truc est inconnu.

Commentaire de juki_webmaster le 08/12/2005 15:00:16

Pas besoin de conio.h, stdlib.h + stdio.h suffit amplement.
Tu fait des main() de tout type lol, il est plus judicieux d'utiliser cette forme: int main(int argc, char *argv[]) en C.
Les variables declarer en global n'ont pas leurs place là, dans le bloc main() sa passerais mieu, enfin un petit return 0; ne ferais de mal a personnes.

Sinon moi meme je suis admiratif devant le code :)
Franchement pas mal :)

Commentaire de euclidoscope le 08/12/2005 23:31:44

Au risque de me répéter, je ne suis pas l'auteur de ce code.
Ici, le but du jeu est de calculer un maximum de décimales avec un minimum d'instruction.
De plus je ne vois pas l'intérêt de passer des arguments a ce programme.
Si on déclarait int main() au lieu de void, ce serait dans le but de récupérer un errorlevel.
Bon, je veux bien admettre que certains système plantent plus souvent qu'on voudrait, mais là si printf ou getch plantent, c'est décidé:
J'en tirerais les conséquences et me retirerais définitivement de la programmation.
Il n'y a qu'une seule fonction dans le code et donc le fait que les variables soit déclarées locales ou globales est strictement indifférent.
On ne peux pas faire return(0) si main est déclaré de type void, voudrais tu m'enduire avec de l'errorlevel?
Je n'ai trouvé nul part trace du prototypage de la fonction getch() dans stdlib.h ou stdio.h.
Quel avatar du C utilise tu ?

Sinon moi meme je suis admiratif devant le code :)
for(;b-c;)f[b++]=a/5;
est plus court que:
do f[b++]=a/5;while(b!=c);
mais le résultat est le même, en économisant 5 caractères !!!
Un bon informaticien sera toujours flemmard.

Commentaire de vecchio56 le 09/12/2005 10:35:22 administrateur CS

void retourne un int, c'est la règle (le return 0 est alors implicite)
Pour le getch, autant l'enlever car il ne sert absolument à rien, surtout dans un programme qui doit être le plus court possible

Commentaire de juki_webmaster le 09/12/2005 10:58:46

Euclidoscope > j'utilise GCC aussi bien sous Windows que sous Linux.
getch() dans stdlib.h ou stdio.h. > getchar();

Commentaire de Kirua le 09/12/2005 12:11:28

impressionant oui ... compile impec avec VC6 si on met bien le int main et le return 0 dans la version plus longue.

Commentaire de wxccxw le 09/12/2005 17:17:03

joli joli !!!

regarde sa tu va etre encore plus bluffé
http://3.141592653589793238462643383279502884197169399375105820974944592.com/

Commentaire de poulpixx le 12/12/2005 21:58:03

pas mal ce site.mé je suis sur ke c juste un algo répété 1000000 de fois.mé bon,c kan mem bon,surtout ac le docteur denfer ;)

Commentaire de Kirua le 12/12/2005 22:26:11

"juste un algo" ... c'est pas des petites maths je pense :)

Commentaire de euclidoscope le 24/12/2005 13:48:07

Renseignement pris on trouve sur l'un des sites francophone les plus complets sur Pi : http://www.pi314.net/

La citation suivante :
"Le fameux programme de Dik T Winter du cwi institute de Hollande. Repose sur la même série d'Euler que les algorithmes compte-gouttes. 158 caractères pour 2400 décimales !"

Commentaire de Mario1095 le 21/01/2009 19:55:09 7/10

Si les 10 premiers chiffres sont : 3.141592654, c'est que c'est bon.
Je n'ai que 13 ans et ça fait plusieurs années que je connais les 9 premières décimales de PI ^^
J'adore les Maths

Commentaire de beg0 le 28/04/2009 00:43:06

pour ceux qui veulent un programme marrant calculant Pi:
http://fr.wikipedia.org/wiki/International_Obfuscated_C_Code_Contest

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Décimales d'un double [ par Boudouillou ] Bonjour à tous,J'ai vu qu'il était possible d'aller chercher la mantisse d'un nombre de type double. Je voudrais savoir si il est possible d'obtenir l Afficher un nombre à plus de cinq décimales dans la console [ par Nours1 ] Bonjour,                 J'essaye actuellement de réaliser un programme de planétarium en C++, et j'aurais besoin pour mes tests d'afficher un nombre Calculer le nombre PI [ par Cedus ] Bonjour,J'ai trouvé une méthode permettant de calculer le nombre Pi et j'ai essayé de faire un algorithme sans succès . <p class="MsoNormal" style=" Chiffre ou lettre ? [ par ralebole ] Bonjour a tousJe voudrais savoir comment faire pour savoir si c'est un nombre ou une chaine des lettresExemple char petibuf[10];la personne rentre nor nombre de port COM? [ par catamenia ] bonjour,Je voudrais connaître en C++ le nombre de ports COM que possède la machine sous laquelles tourne le programme afin de pouvoir rechercher sur q prob de virgule pour disision [ par stefbuet ] oui je sais c tt c** mais j'ai un trou de mémoire, car j'ai arrété le C pendant un pti moment et donc je me souvien plus trop d'un truc :pour faire l' [A SUPPRIMER]connexion serveur IRC [ par diamed ] salut je suis étudiant en telecom et j'ai de sérieux problèmes pour faire un programme qui consiste à : - connecter d'un client à un serveur irc - rec Affichage variables (printf) [ par dj_titeuf ] Bonjour, Ayant commencé à apprendre le langage C très récemment, j'ai pu voir (de façon partielle) l'utilisation de printf(). J'ai ainsi pu voir comm FTP passive mode : port [ par deck_bsd ] Yop à tous, Voila, je voulait savoir comment on utilise les deux dernier nombre d'une commande PASV (protocol FTP) pour trouver le numéro de port auq Calcul grands nombres avec chaines de caractères [ par lectpe ] Bonjour. J'ai presque fini de réaliser un logiciel de math. L'utilisateur peut entrer en ligne de commande ce qu'il veut calculer et le logiciel lui


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales