我有以下代码,根据您选择的项数计算6 * [1 + 1 /(2 ^ 2)+ 1 /(3 ^ 2).... 1的平方根(N ^ 2)]。在这种情况下,我要100个学期。 如果我得到输出应该是什么,有没有办法,使用我现有的代码,确定用于获得该输出的术语数量?
#include <stdio.h>
#include <math.h>
int main(int argc, const char * argv[]) {
long double square = 0;
for (int i = 1; i <= 100; i++) {
long double squareExp = i*i;
square += 1/(squareExp);
}
long double sixTimes = 6 * square;
long double squareRoot = sqrt(sixTimes);
printf("%.8Lf", squareRoot);
return 0;
}
我尝试制作它以便我获取所需的输出(3.141592),将其平方并除以6以负平方根和(* 6),并尝试运行此代码:
double temp = 3.141592 * 3.141592;
double tempB = temp / 6;
printf("%f\n", tempB);
int reachedZero = 0;
int valueOfN = 0;
long double square = 0;
while (square > 0) {
int i = 1;
square -= 1/i;
i++;
if (square <= 1) {
reachedZero = 1;
valueOfN = i;
break;
}
}
printf("%i", valueOfN);
return 0;
}
我无法弄清楚该怎么做。我想取数字(在除去平方根并乘以6后),然后减去从1开始的数字,然后是1/4,然后是1/9,然后是1/16 ... 1 /(n ^ 2) )直到数字变为负数。一旦发生这种情况,我会设置一个标志,我知道需要达到多少条款#。然后我将该特定计数器设置为一个变量,我可以打印出来。
答案 0 :(得分:0)
@EugeneSh。这对我来说是一个有效的解决方案。基本匹配我用循环查找的pi输出,每次检查它。可以将for循环更改为while循环,但它可以正常工作。
int main(int argc, const char * argv[]) {
long double square;
for (long i = 1; i>=1; i++) {
square += 1.0/(i*i);
long double sixTimes = sqrt(6 * square);
if (sixTimes >= 3.141592) {
printf("%li", i);
break;
}
}
return 0;
}