Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- void pi(int* p, int n) {
- int N=(10*n/3+1);
- int rest[N];
- int z[N];
- int sum[N];
- for(int i=0;i<N;i++) {
- rest[i] = 2;
- }
- z[N-1] = 0;
- for(int i=0; i<n; i++) {
- for(int j=N-1; j>0; j--) {
- int k = (j<<1)+1;
- sum[j] = 10 * rest[j] + z[j];
- rest[j] = sum[j] % k;
- z[j-1] = sum[j]/k*j;
- }
- sum[0] = rest[0] * 10 + z[0];
- rest[0] = sum[0] % 10;
- p[i] = sum[0]/10;
- }
- for(int i=n-1; i>0; i--) {
- if(p[i] == 10) {
- p[i-1] = (p[i-1] + 1) % 10;
- p[i] = 0;
- }
- }
- }
- void printArray(int* A, int n) {
- for(int i=0; i<n; i++) {
- printf("%d",A[i]);
- }
- printf("\n");
- }
- int main () {
- int n=100000;
- int p[n];
- pi(p,n);
- printArray(p,n);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement