Escreva o código mais curto para encontrar a soma dos números primos entre a
e b
(inclusive).
Entrada
a
eb
pode ser obtido da linha de comando ou stdin (espaço separado)- Suponha que
1 <= a <= b <=
10 8
Saída Basta imprimir a soma com um caractere de nova linha.
Pontos bônus
- Se o programa aceitar vários intervalos (imprimir uma soma em cada linha), você ganha pontos extras. :)
Respostas:
J,
413219 caracteres:Atualizar
(peneira simples)
por exemplo
Anterior
por exemplo:
fonte
Mathematica 7 (31 caracteres em texto sem formatação)
Se a solução PARI / GP for permitida, então:
fonte
Range[a,b]~Select~PrimeQ//Tr
.C (117 incluindo NL)
fonte
C # (294 caracteres):
fonte
int
slong
e salvar alguns caracteres:long a=...,b=...,t=0,i=a;for(;i<=b;i++)
. Isso leva a 288 caracteres. Você também pode deixarp
retornar um longo e simplesmente retornar um0
oun
e diminuir o loop parat+=p(i)
. 277 caracteres, então.PARI / GP (44 caracteres)
fonte
BASH Shell
47 Personagens
Edit: Apenas percebi que a soma transborda e é coagida como um duplo.
5250 caracteresAqui está uma solução um pouco mais longa, mas também lida com estouros
fonte
$
).tr
adiciona um '+' à direita no final, corrigindo-o levará mais caracteres.awk NF==2{print\$2}
salvar um byte na solução mais longa (não acidentalmente encontraremos expansão de chaves porque não há vírgulas ou..
s).C #, 183 caracteres
Isso seria muito mais curto se não fosse necessário verificar 1 ou se houvesse uma maneira melhor de ... Em um formato mais legível:
fonte
s -= i;
porque isso é apenas açúcar sintático paras = s - i;
que tenta o acessos
antes de defini-lo)Haskell (80)
s 1 100 == 1060
fonte
Ruby 1.9, 63 caracteres
Use assim
Usar a
Prime
classe parece trapaça, mas como as soluções Mathematica usavam funções principais incorporadas ...fonte
Perl, 62 caracteres
Este usa o número regular regex.
fonte
Tarefa normal (Python 3): 95 caracteres
Tarefa de bônus (Python 3): 119 caracteres
fonte
Pari/GP (24 characters)
Like some other solutions, this doesn't strictly meet the requirements, as
a
andb
aren't read from stdin or the command line. I thought it was a nice alternative to the other Pari/GP and Mathematica solutions however.fonte
Common Lisp: (107 chars)
only works for starting points >= 1
fonte
APL (25 characters)
This is a modification of a well-known idiom (see this page for an explanation) for generating a list of primes in APL.
Example:
fonte
Factor -> 98
Output:
fonte
R, 57 characters
fonte
n=2
necessary inscan()
? If the input is standard, is there a problem with omitting the argument and assuming an extra <enter> is required?Japt, 7 bytes
Try it here.
fonte
fj<space>
could be handy.Perl, 103 chars
It'll accept multiple space separated lines and give the answer for each :D
fonte
In Q (95):
Sample Usage:
fonte
C# 302
fonte
Mathematica, 27
Predefined
a
andb
:As a function (also 27):
fonte
R (85 characters)
x=scan(nmax=2);sum(sapply(x[1]:x[2],function(n)if(n==2||all(n %% 2:(n-1)))n else 0))
Extremely inefficient! I'm pretty sure it takes O(n^2) time. It might give warnings about coercing a double to a logical.
Deobfuscated:
fonte
Python 3.1(153 chars):
fonte
from sys import*
2.r=True
->r=1
(and respectively0
forFalse
) 3.if i%j==0and i!=j:r=0
4.if r:p+=[i]
5.print(sum(p))
(replaces last 4 lines)input()
to be shorter. Also, can you useif i%j<1and
instead?GolfScript,
2724 bytesThis is based off of @w0lf's prime number algorithm.
fonte
05AB1E, 5 bytes
Try it online!
fonte
Python: 110 chars
fonte
Python, 133
A little bit of sorcery:
fonte
y+=1
and instead userange(y+1)
and([0]*-~y)[::i]
to save a byte (removing the newline). And using Python 3 will allow you to useinput()
, as long as you put parentheses afterprint
, therefore removing 4 bytes, but adding 1. Worth it.133 chars, Lua (no is_prime in-built function)
Here's an example where I added the line "print(i)" to display all primes found and the sum at the end of them: http://codepad.org/afUvYHnm.
fonte
PowerShell - 94
fonte
F# (141)
One third of the code is for parsing the input.
fonte