C++ 计算圆周率代码:逐位输出
以下是一个使用 C++ 编写的计算圆周率的代码,每计算出一位就输出一次:
#include <iostream>
#include <iomanip>
#include <cmath>
int main() {
int numDigits; // 要计算的圆周率位数
std::cout << "请输入要计算的圆周率位数:";
std::cin >> numDigits;
std::cout << std::fixed << std::setprecision(numDigits + 1); // 设置输出精度
int maxIterations = std::ceil(numDigits / std::log10(2)); // 迭代次数
int a = 10 * std::pow(2 * numDigits, 0.5); // 初始化计算参数 a
int b = 0; // 初始化计算参数 b
int c = 1; // 初始化计算参数 c
int d = 0; // 初始化计算参数 d
for (int i = 0; i < maxIterations; i++) {
int q = (a * b + c) / c; // 计算商 q
int r = (a * b + c) % c; // 计算余数 r
if (4 * q + r - d < c) { // 判断是否需要输出
std::cout << q;
if (i == 0) {
std::cout << '.';
}
// 更新计算参数
d = r;
a = 10 * (a - c * q);
b = 10 * q;
} else {
// 更新计算参数
d = (r + a * (b - q * c)) * 2;
a = a * (2 * q + 1);
b = b * (2 * q + 1);
c = c * (2 * q + 1);
}
}
std::cout << std::endl;
return 0;
}
这个代码使用了一个无限迭代的算法来计算圆周率,每次迭代都计算出一位圆周率,并将其输出。用户需要输入要计算的圆周率位数,然后代码会根据输入的位数进行计算和输出。
原文地址: https://www.cveoy.top/t/topic/qBZN 著作权归作者所有。请勿转载和采集!