Calcule los primeros N dígitos de e

13

Desafío

Escriba un programa para calcular los primeros N (<= 10 ^ 3) dígitos de e .

Su programa debe tomar un entero N como entrada.

Entrada:

100

Salida:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427

Entrada:

7

Salida:

2.718282

Entrada:

1000

Salida:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035

¡La solución más corta gana!

Quijotesco
fuente

Respuestas:

8

Mathematica (12 bytes)

N[E,Input[]]
Quijotesco
fuente
Puede probarlo en línea: hay un e-digitscomando en yubnub.org, por ejemplo, yubnub.org/parser/parse?command=e-digits+1000 que usa wolframalpha wolframalpha.com/input/…
jfs
1
-1 porque no implementa el cálculo usted mismo.
FUZxxl
2
@FUZxxl: el autor no solicitó una implementación, solo se prefieren las más cortas.
Quijotesco
77
@Quixotic La pregunta dice "calcular" no solo la salida. ¿Habría argumentado lo mismo si la pregunta hubiera dicho "calcular" en lugar de "calcular"?
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]

Calcula iteraciones N + 2 de la serie de potencia estándar para e.

hallvabo
fuente
6

J, 20 ... ish.

Computacional, pero ... Muy ineficiente. Con n definido (20):

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

Como una función monádica (32):

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

Como una función tácita (33, fija):

(0 j.<:)":(+/)&:(%&!&i.&x:&(9&+))
Jesse Millikan
fuente
Esto converge muy rápido (para 100 dígitos necesita "solo" 70 términos) para que pueda soltar eso +9.
Eelvex
Para 1000 dígitos esto: (0 j.<:1000)":+/%!i.x:450toma solo unos segundos.
Eelvex
¿Te gustaría explicar tu código?
aaaaaaaaaaaa
@Eelvex: Pero necesito términos adicionales hasta N = 30 más o menos. (¿Alguna sugerencia para reducir ese lío de composiciones, o es eso cierto?)
Jesse Millikan
Ah, tienes razón, eso es lamentable. (Eso "desorden" es más corta que cualquier otra cosa que se le ocurrió - a menos que, por supuesto, se utiliza un número fijo de i como:. (0 j.<:n)":+/%!i.999x; A continuación, de forma tácita: (+/%!i.999x)":~0 j.<:)
Eelvex
5

Python, 67

import decimal as d
d.getcontext().prec=input()
print d._One.exp()
jfs
fuente
¿Guardar 3 caracteres? from decimal import*y eliminar ambosd.
Timtech
@Timtech import *no importará _Onedebido al guión bajo destacado.
jfs
Está bien, no sabía eso, lo siento /
Timtech
3

05AB1E, 4 3 2 bytes

Tachado 4 sigue siendo regular 4; (

Gracias a @Adnan por un byte.

žt

Utiliza la codificación CP-1252 .

Explicación:

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

Actualizar:

Eliminar I, ya que žttoma entrada de todos modos si no hay ninguno en la pila.

George Gibson
fuente
1
Lo marqué como no competitivo porque 05AB1E se creó unos 4 años y medio después de que se publicara este desafío.
Mego
@Mego OK, recordaré hacerlo la próxima vez.
George Gibson
1
¡Bienvenido a Programming Puzzles y Code Golf! El žcarácter es 1 byte en la codificación CP-1252 , por lo que tiene una puntuación total de 2 bytes en lugar de 3: p.
Adnan
@Adnan Gracias! Buen lenguaje, por cierto.
George Gibson
@GeorgeGibson ¡Gracias! :)
Adnan
2

Rubí, 68

require 'bigdecimal/math';include BigMath;puts E(gets.to_i).to_s 'F'
david4dev
fuente
no funciona en ruby1.8. Produce resultados no válidos en ruby1.9
jfs
Tienes razón, pero debería funcionar en Ruby 1.9. Parece que hay algo mal con la precisión en la función E.
david4dev
Se ve bien aquí, solo agrega algunos dígitos imprecisos. A Mayby le gusta esto? require'bigdecimal / math '; pone BigMath :: E (a = gets.to_i) .to_s (? F) [0, a + 1]
steenslag 13/03/11
1

GolfScript 43 41

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

Editar: también podría reemplazar el 0 con el sobrante 1 de la inicialización de b, la diferencia resultante es demasiado pequeña para llegar a la salida.

Dejé la versión anterior, ya que eso es lo que he documentado a continuación.

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

~10\?Tome la entrada y calcule 10 ^ entrada, deje el resultado en la pila.
1:b;Almacenar 1 en b.
0 461,Ponga 0 en la pila, ponga la matriz [0 1 ... 459 460] en la pila.
{ }460*Ejecuta la función 460 veces.
)b*:bTome el último elemento de la matriz, multiplíquelo por b, almacene el resultado en b y deje el resultado en la pila.
@+\Cambie el 0 (que es solo un cero en la primera iteración) a la parte superior de la pila, agréguelo al valor b sobrante y vuelva a cambiar el resultado.
;Elimine el resto de la matriz (solo queda [0]).
¡El número que se inicializó a 0 ahora contiene el valor e * 460! yb sosten 460!
*Multiplicar 10 ^ entrada por e * 460! (son en este punto los únicos 2 elementos que quedan en la pila).
b/Divide el resultado por b.
La pila ahora contiene el valor e * 10 ^ input que cuando se convierte en una cadena contendrá todos los decimales, pero no el punto.
`);(;'2.'\Un montón de operaciones de cadena para caber en el punto.

e * 460! se calcula como 1 + 460 + 460 * 459 + 460 * 459 * 458, etc.

aaaaaaaaaaaa
fuente
1

aC , 17 caracteres

scale=read()
e(1)
Tomás
fuente
0

J, 17

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

Ejemplo:

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

Usos construidos en verbos exponenciales, por lo tanto, "calcular" se basa en motivos inestables. Básicamente:

^1 - computes e**1
x: - does extended precision
0jy ": - formats the number to y digit
barbermot
fuente
*&0j1es simplementej.
FrownyFrog
0

GTB , 14

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

Explicación

e- Poner ecomo el último valor calculado

S?- Convertir ea cadena_

`A - Entrada A

S;_,1,A+1Mostrar los primeros Adígitos dee

Timtech
fuente
0

Mathcad, [tbd] bytes

ingrese la descripción de la imagen aquí

Utiliza un algoritmo de espita: http://comjnl.oxfordjournals.org/content/11/2/229.full.pdf+html .


El recuento de bytes no se da ya que la equivalencia de recuento de bytes de Mathcad aún no se ha determinado. Sin embargo, el uso de un símbolo de equivalencia es de aproximadamente 121 bytes ... y no va a ganar ningún premio de brevedad sin importar cómo se determine la equivalencia.

Stuart Bruff
fuente
0

Mathematica, 7 bytes

N[E,#]&

Mi respuesta es un golf adicional de esta respuesta.

Pruébalo en línea!

Por alguna razón, el resultado en TIO parece divertido, pero lo probé en mi máquina y el código funciona bien.

RGS
fuente