计算e的前N个数字


13

挑战

编写一个程序来计算e的前N(<= 10 ^ 3)个数字。

您的程序应采用整数N作为输入。

输入:

100

输出:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427

输入:

7

输出:

2.718282

输入:

1000

输出:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035

最短的解决方案获胜!

Answers:


8

Mathematica(12个字节)

N[E,Input[]]

您可以在线尝试:e-digitsyubnub.org上有一个命令,例如yubnub.org/parser/parse?command=e-digits+1000,它使用wolframalphawolframalpha.com/input/…–
jfs

1
-1,因为您无法自行执行计算。
FUZxxl 2011年

2
@FUZxxl:作者没有要求实现,仅首选最短的实现。
Quixotic

7
@Quixotic问题确实说“计算”而不仅仅是输出。如果问题是说“计算”而不是“计算”,您是否会争论同样的事情?
nitro2k01

7

Python,69岁

e = f = n = 1; N = input()+ 2; exec“ e + = 10 ** N / f; f * = n; n + = 1;” * N; print'2。'+`e` [ 1:-4]

为e计算标准幂级数的N + 2次迭代。


6

J,20 ... ish。

计算的,但是...效率很低。定义n(20):

(0 j.<:n)":+/%!i.x:n+9

作为单项函数(32):

ge =. 3 : '(0 j.<:y)":+/%!i.x:y+9'

作为默认功能(33,固定):

(0 j.<:)":(+/)&:(%&!&i.&x:&(9&+))

这会非常快速地收敛(对于100位数字,您只需要70个术语即可),因此您可以删除它+9
Eelvex 2011年

对于1000位数(0 j.<:1000)":+/%!i.x:450,只需几秒钟。
Eelvex 2011年

您是否愿意解释您的代码?
aaaaaaaaaaaaa

@Eelvex:但是我需要额外的条款,直到N = 30左右。(有任何暗示可以减少这种混乱的局面,或者这是对的吗?)
Jesse Millikan

啊,你是对的,那很不幸。(那个“乱”是比什么都更短的我能想出的-除非,关当然,你使用一个固定的号码我喜欢:(0 j.<:n)":+/%!i.999x;然后心照不宣:(+/%!i.999x)":~0 j.<:
Eelvex

5

Python,67岁

import decimal as d
d.getcontext().prec=input()
print d._One.exp()

节省3个字符?from decimal import*并同时删除d.
Timtech

@Timtech 由于要强调下划线而import *不会导入_One
jfs

好吧,不知道,对不起/
Timtech '16

3

05AB1E,4 3 2字节

划掉4仍然是常规4;(

感谢@Adnan提供了一个字节。

žt

使用CP-1252编码。

说明:

žt - Push input. Pop a, push e to a places (up to 10000).

更新:

如果栈上都没有输入,则以remove I方式žt进行输入。


1
我将其标记为不竞争,因为05AB1E是在发布此挑战后大约四年半创建的。
Mego

@Mego好,我会记得下次再做。
乔治·吉布森

1
欢迎来到编程难题和Code Golf!该ž字符在CP-1252编码中为1个字节,因此总得分为2个字节,而不是3:p。
阿德南

@Adnan谢谢!顺便说一句,顺便说一句。
乔治·吉布森

@GeorgeGibson谢谢!:)
阿德南(Adnan)

2

Ruby,68岁

require 'bigdecimal/math';include BigMath;puts E(gets.to_i).to_s 'F'

在ruby1.8上不起作用。它在ruby1.9上产生无效结果
jfs

没错,但是它应该在Ruby 1.9中工作。E函数的精度似乎有些问题。
david4dev 2011年

在这里看起来不错,只是添加了一些不精确的数字。Mayby这样吗?require'bigdecimal / math'; put BigMath :: E(a = gets.to_i).to_s(?F)[0,a + 1]
steenslag 2011年

1

高尔夫脚本43 41

~10\?1:b 461,{)b*:b@+\}460*;*b/`);(;'2.'\

编辑:我也可以将初始化b的剩余数1替换为0,结果差异太小而无法输出。

我留下了旧版本,因为这是我在下面记录的内容。

~10\?1:b;0 461,{)b*:b@+\}460*;*b/`);(;'2.'\

~10\?接受输入并计算10 ^输入,将结果保留在堆栈中。
1:b;将1存储在b中。
0 461,将0放在堆栈上,将数组[0 1 ... 459 460]放在堆栈上。
{ }460*执行功能460次。
)b*:b取数组的最后一个元素,乘以b,将结果存储在b中,然后将结果保留在堆栈中。
@+\将0(在第一次迭代中仅为0)切换到堆栈顶部,将其添加到剩余的b值,然后再次将结果切换回。
;删除数组的其余部分(仅剩下[0])。
现在,已初始化为0的数字的值为e * 460!b保持460!
*将10 ^输入乘以e * 460!(此时,它们是堆栈上仅剩2个元素)。
b/将结果除以b。
堆栈现在保存值e * 10 ^ input,将其转换为字符串时将保存所有小数,但不包含点。
`);(;'2.'\一堆适合点的字符串操作。

e * 460!计算为1 + 460 + 460 * 459 + 460 * 459 * 458等。



0

J,17

(":&(x:^1)@*&0j1)

例:

(":&(x:^1)@*&0j1) 50
2.71828182845891281655718620537435347047040502245993

使用内置的指数动词-因此,“计算”是基于不稳定的。基本上:

^1 - computes e**1
x: - does extended precision
0jy ": - formats the number to y digit

*&0j1很简单j.
FrownyFrog

0

GTB,14

eS?`AS;_,1,A+1

说明

e-放置e为最后一个计算值

S?-转换e为字符串_

`A -输入A

S;_,1,A+1显示的前A几位e



0

Mathematica,7个字节

N[E,#]&

我的答案是对此答案的进一步探讨。

在线尝试!

由于某些原因,TIO上的输出看起来很有趣,但是我在我的机器上对其进行了测试,并且代码工作正常。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.