在给定输出的情况下,程序计算中使用了多少项?

时间:2015-05-19 19:19:18

标签: c++ c sum

我有以下代码,根据您选择的项数计算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) )直到数字变为负数。一旦发生这种情况,我会设置一个标志,我知道需要达到多少条款#。然后我将该特定计数器设置为一个变量,我可以打印出来。

1 个答案:

答案 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;
}