Escriba el código más corto para encontrar la suma de primos entre a
y b
(inclusive).
Entrada
a
yb
se puede tomar de la línea de comando o stdin (espacio separado)- Suponga
1 <= a <= b <=
10 8
Salida Simplemente imprima la suma con un carácter de nueva línea.
Puntos extra
- Si el programa acepta varios rangos (imprima una suma en cada línea), obtendrá puntos extra. :)
Respuestas:
J,
413219 caracteres:Actualizar
(tamiz simple)
p.ej
Anterior
p.ej:
fuente
Mathematica 7 (31 caracteres en texto plano)
Si la solución PARI / GP lo permite, entonces:
fuente
Range[a,b]~Select~PrimeQ//Tr
.C (117 incluyendo NL)
fuente
C # (294 caracteres):
fuente
int
slong
y ahorrar unos cuantos caracteres:long a=...,b=...,t=0,i=a;for(;i<=b;i++)
. Esto lo lleva a 288 caracteres. También puede dejar quep
devuelva un valor largo y solo devolver uno0
o másn
y acortar el ciclo at+=p(i)
. 277 caracteres, entonces.PARI / GP (44 caracteres)
fuente
BASH Shell
47 personajes
Editar: Acabo de darme cuenta de que la suma se desborda y se coacciona como un doble.
5250 caracteresAquí hay una solución un poco más larga, pero también maneja los desbordamientos
fuente
$
).tr
agrega un '+' al final, arreglarlo requerirá más caracteres.awk NF==2{print\$2}
guardar un byte en la solución más larga (no nos toparemos accidentalmente con la expansión de llaves porque no hay comas ni..
s).C #, 183 caracteres
Esto sería mucho más corto si no tuviera que verificar 1, o si hubiera una mejor manera de ... En un formato más legible:
fuente
s -= i;
que es solo azúcar sintáctico als = s - i;
que intenta acceders
antes de configurarlo)Haskell (80)
s 1 100 == 1060
fuente
Ruby 1.9, 63 caracteres
Usar así
Usar la
Prime
clase se siente como hacer trampa, pero dado que las soluciones de Mathematica utilizan funciones principales integradas ...fuente
Perl, 62 caracteres
Este usa el número primo regex.
fuente
Tarea normal (Python 3): 95 caracteres
Tarea de bonificación (Python 3): 119 caracteres
fuente
Pari / GP (24 caracteres)
Al igual que otras soluciones, esta no cumple estrictamente con los requisitos, como
a
yb
no se leen de la entrada estándar o la línea de comandos. Sin embargo, pensé que era una buena alternativa a las otras soluciones de Pari / GP y Mathematica.fuente
Lisp común: (107 caracteres)
solo funciona para puntos de partida> = 1
fuente
APL (25 caracteres)
Esta es una modificación de un idioma conocido (vea esta página para obtener una explicación) para generar una lista de primos en APL.
Ejemplo:
fuente
Factor -> 98
Salida:
fuente
R, 57 caracteres
fuente
n=2
necesario especificar enscan()
? Si la entrada es estándar, ¿hay algún problema al omitir el argumento y asumir que se requiere un <enter> adicional?Japt , 7 bytes
Pruébalo aquí
fuente
fj<space>
podría ser útil.Perl, 103 caracteres
Aceptará múltiples líneas separadas por espacios y dará la respuesta para cada una: D
fuente
En Q (95):
Uso de muestra:
fuente
C # 302
fuente
Mathematica , 27
Predefinido
a
yb
:Como una función (también 27):
fuente
R (85 caracteres)
x=scan(nmax=2);sum(sapply(x[1]:x[2],function(n)if(n==2||all(n %% 2:(n-1)))n else 0))
¡Extremadamente ineficiente! Estoy bastante seguro de que toma O (n ^ 2) tiempo. Puede dar advertencias sobre la coerción de un doble a un lógico.
Desobuscado:
fuente
Python 3.1 (153 caracteres):
fuente
from sys import*
2.r=True
->r=1
(y respectivamente0
paraFalse
) 3.if i%j==0and i!=j:r=0
4.if r:p+=[i]
5.print(sum(p))
(reemplaza las últimas 4 líneas)input()
para ser más corto. Además, ¿puedes usarif i%j<1and
en su lugar?GolfScript,
2724 bytesEsto se basa en el algoritmo de número primo de @ w0lf .
fuente
05AB1E , 5 bytes
Pruébalo en línea!
fuente
Python: 110 caracteres
fuente
Python, 133
Un poco de brujería:
fuente
y+=1
y en su lugar usarrange(y+1)
y([0]*-~y)[::i]
para guardar un byte (eliminar la nueva línea). Y usar Python 3 le permitirá usarinput()
, siempre y cuando ponga paréntesis despuésprint
, por lo tanto, elimine 4 bytes, pero agregue 1. Vale la pena.133 caracteres, Lua (sin función integrada is_prime)
Aquí hay un ejemplo donde agregué la línea "print (i)" para mostrar todos los números primos encontrados y la suma al final de ellos: http://codepad.org/afUvYHnm .
fuente
PowerShell - 94
fuente
F # (141)
Un tercio del código es para analizar la entrada.
fuente