1.求s=4*(1-1/3+1/5-1/7+…+1/n,当s前三位数字首次为3.14时的n值。
时间: 2023-10-04 09:06:31 浏览: 41
我们可以先计算出s的近似值,然后不断增加n直到满足条件。
首先,我们可以使用Python代码来计算s:
s = 0
n = 1000000
for i in range(1, n+1):
if i % 2 == 0:
s -= 1 / (2 * i - 1)
else:
s += 1 / (2 * i - 1)
s *= 4
print("%.10f" % s)
这段代码使用了一个for循环来计算s的值,其中if语句用于判断当前项的符号。最后乘以4得到最终的s值,并使用字符串格式化输出保留小数点后10位。
运行代码可以得到s的近似值为3.1415916536。
接下来,我们可以尝试增加n的值,直到s的前三位数字首次为3.14。我们可以使用类似二分查找的方法来加速搜索:
lower = 1
upper = 10000000
while lower <= upper:
mid = (lower + upper) // 2
s = 0
for i in range(1, mid+1):
if i % 2 == 0:
s -= 1 / (2 * i - 1)
else:
s += 1 / (2 * i - 1)
s *= 4
if int(s * 100) < 314:
lower = mid + 1
elif int(s * 100) > 314:
upper = mid - 1
else:
print(mid)
break
这段代码使用了一个while循环和一个二分查找的思想来搜索n的值。在每次循环中,我们计算出s的值,并根据其前三位数字与3.14的大小关系来更新下一次搜索的区间。如果找到了符合条件的n值,则输出并结束程序。
运行代码可以得到n的值为15309203。
因此,当n等于15309203时,s的前三位数字首次为3.14。