Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define N 1000
- #include "stdio.h"
- #include "stdlib.h"
- #define PERC N + 1
- int main(){
- FILE* file = fopen( "pi.txt", "w" );
- if (file == NULL)
- {
- printf("Error opening file!\n");
- exit(1);
- }
- char* pi = (char*)malloc( sizeof(char) * ( PERC ) );
- int last = 0;
- int boxes = ( PERC ) * 10 / 3 ;
- int* reminders = (int*)malloc(sizeof(int) * boxes );
- for( int i = 0; i < boxes; i++ )
- reminders[i] = 2;
- int heldDigits = 0;
- for( int i = 0; i < PERC; i++ ){
- int carriedOver = 0;
- int sum = 0;
- for ( int j = boxes - 1; j >= 0; j-- ){
- reminders[ j ] *= 10;
- sum = reminders[j] + carriedOver;
- int quotient = sum / ( j * 2 + 1 );
- reminders[ j ] = sum % ( j * 2 + 1 );
- carriedOver = quotient * j;
- }
- reminders[0] = sum % 10;
- int q = sum / 10;
- if ( q == 9 ) {
- heldDigits++;
- }else if ( q == 10 ){
- q = 0;
- for( int k = 1; k < heldDigits; k++ ){
- char replaced = pi[ i - k ];
- if( replaced == '9' ){
- replaced = '0';
- } else {
- replaced++;
- }
- pi[i-k] = replaced;
- }
- heldDigits = 1;
- } else {
- heldDigits = 1;
- }
- pi[last++] = q + '0';
- }
- for( int i = 0; i < PERC; i++ ){
- if( i == 1 )
- fprintf(file,".");
- fprintf( file, "%c", pi[i] );
- }
- fprintf(file,"\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement