该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
源文地址:http://www.cppfans.com/articles/basecalc/c_pi_10000.asp
原文是用C++ 写的,我稍微改了一下。
package com.bsj.cis.util;
public class CirclePI {
public static void main(String[] args) {
intARRSIZE = 10010, DISPCNT = 10000; // 定义数组大小,显示位数
int[] x = new int[ARRSIZE];
int[] z = new int[ARRSIZE];
for(inti = 0; i < ARRSIZE; i++) {
x[i] = 0;
z[i] = 0;
}
int a = 1, b = 3, c, d, Run = 1, Cnt = 0;
x[1] = 2;
z[1] = 2;
while(Run != 0 && (++Cnt < 200000000)) {
d = 0;
for(int i = ARRSIZE - 1; i > 0; i--) {
c = z[i] * a + d;
z[i] = c % 10;
d = c / 10;
}
d = 0;
for(inti = 0; i < ARRSIZE; i++) {
c = z[i] + d * 10;
z[i] = c / b;
d = c % b;
}
Run = 0;
for(int i = ARRSIZE - 1; i > 0; i--) {
c = x[i] + z[i];
x[i] = c % 10;
x[i - 1] += c / 10;
Run |= z[i];
}
a++;
b += 2;
}
System.out.println("计算了"+ Cnt + " 次\n"+ x[0] + x[1] + ".");
for(int i = 0; i < DISPCNT; i++) {
if(i != 0 && ((i % 100) == 0))
System.out.println();
System.out.print((int) x[i + 2]);
}
}
}