Napisz najkrótszy kod do znalezienia sumy liczb pierwszych między a
i b
(włącznie).
Wkład
a
ib
może być pobrany z wiersza poleceń lub standardowego wejścia (oddzielone spacją)- Załóżmy
1 <= a <= b <=
10 8
Wyjście Wystarczy wydrukować sumę ze znakiem nowej linii.
Punkty bonusowe
- Jeśli program akceptuje wiele zakresów (wydrukuj jedną sumę w każdej linii), otrzymasz dodatkowe punkty. :)
Odpowiedzi:
J,
413219 znaków:Aktualizacja
(proste sito)
na przykład
Poprzedni
na przykład:
źródło
Mathematica 7 (31 znaków w postaci zwykłego tekstu)
Jeśli dozwolone jest rozwiązanie PARI / GP, to:
źródło
Range[a,b]~Select~PrimeQ//Tr
.C (117 w tym NL)
źródło
C # (294 znaków):
źródło
int
slong
i zaoszczędzić kilka znaków:long a=...,b=...,t=0,i=a;for(;i<=b;i++)
. Daje to 288 znaków. Możesz także pozwolićp
na długi powrót i po prostu wróć albo0
albon
i skróć pętlę dot+=p(i)
. Zatem 277 znaków.PARI / GP (44 znaki)
źródło
BASH Shell
47 znaków
Edycja: Właśnie zdałem sobie sprawę, że suma przepełnia się i jest wymuszona podwójnie.
5250 znakówOto nieco dłuższe rozwiązanie, ale radzi sobie również z przepełnieniami
źródło
$
).tr
dodaje końcowe „+” na końcu, naprawienie zajmie więcej znaków.awk NF==2{print\$2}
aby zapisać bajt na dłuższym rozwiązaniu (nie przypadkowo natrafimy na rozwinięcie nawiasu, ponieważ nie ma przecinków ani..
s).C #, 183 znaków
Byłoby to znacznie krótsze, gdyby nie musiał sprawdzać 1, lub gdyby istniał lepszy sposób na ... W bardziej czytelnym formacie:
źródło
s -= i;
ponieważ to po prostu cukier syntaktyczny dlas = s - i;
którego próbuje uzyskać dostęps
przed ustawieniem go)Haskell (80)
s 1 100 == 1060
źródło
Ruby 1.9, 63 znaki
Użyj w ten sposób
Korzystanie z
Prime
klasy jest jak oszustwo, ale ponieważ rozwiązania Mathematica wykorzystywały wbudowane funkcje główne ...źródło
Perl, 62 znaki
Ten używa wyrażenia regularnego.
źródło
Normalne zadanie (Python 3): 95 znaków
Dodatkowe zadanie (Python 3): 119 znaków
źródło
Pari / GP (24 znaki)
Podobnie jak w przypadku innych rozwiązań, to nie ściśle spełniać wymagania, jak
a
ib
nie są odczytywane ze standardowego wejścia lub z wiersza poleceń. Myślałem jednak, że to dobra alternatywa dla innych rozwiązań Pari / GP i Mathematica.źródło
Common Lisp: (107 znaków)
działa tylko dla punktów początkowych> = 1
źródło
APL (25 znaków)
Jest to modyfikacja dobrze znanego idiomu ( wyjaśnienie na tej stronie ) do generowania listy liczb pierwszych w APL.
Przykład:
źródło
Współczynnik -> 98
Wydajność:
źródło
R, 57 znaków
źródło
n=2
koniecznescan()
? Jeśli dane wejściowe są standardowe, czy istnieje problem z pominięciem argumentu i przyjęciem dodatkowego <enter> jest wymagane?Japt , 7 bajtów
Wypróbuj tutaj.
źródło
fj<space>
może być przydatny.Perl, 103 znaki
Przyjmie wiele linii oddzielonych spacjami i poda odpowiedź dla każdego: D
źródło
W pytaniu (95):
Przykładowe użycie:
źródło
C # 302
źródło
Mathematica , 27
Predefiniowane
a
ib
:W funkcji (także 27):
źródło
R (85 znaków)
x=scan(nmax=2);sum(sapply(x[1]:x[2],function(n)if(n==2||all(n %% 2:(n-1)))n else 0))
Niezwykle nieefektywny! Jestem prawie pewien, że zajmuje to czas O (n ^ 2). Może to dawać ostrzeżenia o zmuszaniu do podwojenia logiki.
Odbarwione:
źródło
Python 3.1 (153 znaki):
źródło
from sys import*
2.r=True
->r=1
(i odpowiednio0
dlaFalse
) 3.if i%j==0and i!=j:r=0
4.if r:p+=[i]
5.print(sum(p))
(zastępuje ostatnie 4 wiersze)input()
aby być krótszym. Czy możeszif i%j<1and
zamiast tego użyć ?GolfScript,
2724 bajtówJest to oparte na algorytmie liczby pierwszej @ w0lf .
źródło
05AB1E , 5 bajtów
Wypróbuj online!
źródło
Python: 110 znaków
źródło
Python, 133
Trochę czarów:
źródło
y+=1
i zamiast tego użyćrange(y+1)
i,([0]*-~y)[::i]
aby zapisać bajt (usunięcie nowej linii). A użycie Python 3 pozwoli ci używaćinput()
, o ile wstawisz po nim nawiasyprint
, usuwając w ten sposób 4 bajty, ale dodając 1. Warto.133 znaki, Lua (brak wbudowanej funkcji is_prime)
Oto przykład, w którym dodałem wiersz „print (i)”, aby wyświetlić wszystkie znalezione liczby pierwsze i ich sumę na końcu: http://codepad.org/afUvYHnm .
źródło
PowerShell - 94
źródło
F # (141)
Jedna trzecia kodu służy do analizowania danych wejściowych.
źródło