Saya terkejut bahwa tantangan ini belum ada di sini, karena sudah sangat jelas. (Atau saya terkejut saya tidak bisa menemukannya dan siapa pun akan menandainya sebagai duplikat.)
Tugas
Dengan bilangan bulat -negatif , hitung jumlah bilangan prima pertama dan hasilkan.
Contoh 1
Untuk , lima bilangan prima pertama adalah:
- 2
- 3
- 5
- 7
- 11
Jumlah angka-angka ini adalah , sehingga program harus menghasilkan .
Contoh # 2
Untuk , bilangan prima "nol pertama" tidak ada. Dan jumlah no angka - tentu saja - .
Aturan
- Anda dapat menggunakan built-in, misalnya, untuk memeriksa apakah suatu bilangan prima.
- Ini adalah kode-golf , sehingga jumlah byte terendah di setiap bahasa menang!
Jawaban:
6502 rutin kode mesin , 75 byte
Mengharapkan pointer ke beberapa penyimpanan sementara di
$fb
/$fc
dan jumlah bilangan prima untuk diringkas$2
. Mengembalikan jumlah padaA
(register accu).Tidak pernah melakukan beberapa pemeriksaan prima dalam kode mesin 6502, jadi ini dia akhirnya;)
Perhatikan ini mulai memberikan hasil yang salah untuk input> = 14. Ini karena overflow, kode ini bekerja dengan kisaran nomor "alami" dari platform 8bit yang
0 - 255
untuk unsigned .Komentar pembongkaran
Contoh program assembler C64 menggunakan rutin:
Demo online
Kode dalam sintaksis ca65 :
sumber
Python 2 , 49 byte
Menggunakan teorema Wilson , (seperti yang diperkenalkan ke situs oleh xnor, saya percaya di sini )
Cobalah online!
Fungsi(n−1)! ≡ −1(modn)
f
ini bersifat rekursif, dengan input awaln
dan ekor ketikan
mencapai nol, menghasilkan nol itu (karena logisand
);n
akan dikurangi kapan sajat
, nomor tes yang bertambah dengan setiap panggilanf
, adalah prima. Tes prima adalah apakah yang dengannya kami melacak kuadrat faktorial.p
sumber
Jelly , 4 byte
Program Jelly pertama saya
Cobalah online!
sumber
ÆN€S
juga akan melakukannya.05AB1E , 3 byte
Cobalah online.
Penjelasan:
sumber
Java 8, 89 byte
Cobalah online.
Penjelasan:
sumber
Perl 6 , 31 byte
Cobalah online!
The
is-prime
built-in sayangnya panjang.sumber
J , 8 byte
Cobalah online!
sumber
Brachylog ,
87 byteCobalah online!
Disimpan 1 byte berkat @sundar.
Penjelasan
sumber
~lṗᵐ≠≜+
tampaknya bekerja, selama 7 byte (Juga, saya ingin tahu mengapa ia memberikan output 2 * input + 1 jika dijalankan tanpa pelabelan.)[2,+inf)
jelas. Oleh karena itu, ia tahu bahwa jumlah dari 5 bilangan prima (jika inputnya adalah 5) harus setidaknya10
, dan sebagian mengetahui bahwa karena unsur-unsurnya harus berbeda, mereka tidak semua bisa menjadi 2 sehingga setidaknya11
. TL; DR implementasi labellization implisit tidak cukup kuat.Sekam , 4 byte
Cobalah online!
Menghasilkan İ daftar nfinite dari p nomor rime, dan menghitung jumlah dari pertamaN (
Σ↑
)sumber
İ€
adalah terbatas.Attache , 10 byte
Cobalah online!
ho hum
sumber
Retina , 41 byte
Cobalah online! Saya ingin terus menambahkan 1 sampai saya telah menemukan
n
bilangan prima, tetapi saya tidak tahu bagaimana cara melakukannya di Retina jadi saya beralih ke loop bersarang. Penjelasan:Mulai dengan 1.
n
Waktu loop .Buat salinan dari nilai sebelumnya, dan tambahkan.
Terus menambahnya selagi komposit. (The
)
menutup loop luar.)Hapus yang asli
1
.Jumlahkan dan konversikan ke desimal.
sumber
MATL , 4 byte
Cobalah online!
Penjelasan:
sumber
PHP, 66 byte
menggunakan fungsi utama saya sendiri lagi ...
Jalankan sebagai pipa dengan
-nr
atau coba online .kerusakan
sumber
for(;$argn;$i-1||$s+=$n+!$argn--)for($i=++$n;--$i&&$n%$i;);echo$s;
Haskell , 48 byte
Cobalah online!
Catatan:0 , 1 demikian juga. Tapi kita bisa mengatasinya dengan memulainya2 , jadi dalam hal ini sudah cukup.
\p-> all((>0).mod p)[2..p-1]
bukan pemeriksaan perdana yang valid, karena iniTrue
untuksumber
C (gcc) , 70 byte
Cobalah online!
sumber
n=s
alih-alihreturn s
C, C ++, D:
147142 byteOptimasi 5 byte untuk C dan C ++:
-2 byte terima kasih kepada Zacharý
p
menguji apakah suatu bilangan prima,f
menjumlahkann
bilangan pertamaKode yang digunakan untuk menguji:
C / C ++:
D Dioptimalkan jawaban oleh Zacharý ,
133131 byteD memiliki sistem templat golf
sumber
T p(T)(T a){if(a<4)return 1;for(T i=2;i<a;)if(!(a%i++))return 0;return 1;}T f(T)(T n){T c,v=1;while(n)if(p(++v)){c+=v;--n;}return c;}
. Juga, C / C ++ / D dapatint p(int a){if(a<4)return 1;for(int i=2;i<a;++i)if(!(a%i))return 0;return 1;}int f(int n){int c=0,v=1;while(n)if(p(++v)){c+=v;--n;}return c;}
(sama dengan optimasi C / C ++, hanya menyesuaikan algoritma abit){c+=v;--n;}
menjadic+=v,--n;
?int
s):T p(T)(T a){T r=1,i=2;for(;i<a;)r=a%i++?r:0;return r;}T f(T)(T n){T c,v=1;while(n)if(p(++v))c+=v,--n;return c;}
a>3&i<a
alih-alihi<a
dan hapusif(a<4)...
Japt
-x
, 11 byteCobalah online!
Menyimpan beberapa byte berkat fitur bahasa baru.
Penjelasan:
sumber
JavaScript (ES6), 55 byte
Cobalah online!
sumber
Stax , 6 byte
Jalankan dan debug itu
Penjelasan:
sumber
APL (Dyalog Unicode) , 7 + 9 = 16 byte
Cobalah online!
9 byte tambahan untuk mengimpor
pco
Dfn (dan lainnya):⎕CY'dfns'
Bagaimana:
sumber
import X
(baris baru)X.something()
dalam python dihitung dengan baris baru.Ruby, 22 + 7 = 29 byte
Jalankan dengan
ruby -rprime
(+7)sumber
Pari / GP , 20 byte
Cobalah online!
sumber
JAEL , 5 byte
Penjelasan (dihasilkan secara otomatis):
sumber
Python 2 ,
63595651 byteCobalah online!
Diselamatkan:
Tanpa libs:
Python 2 , 83 byte
Cobalah online!
sumber
f=lambda n:n and prime(n)+f(n-1)
menghemat lima (mungkin golf juga lebih jauh)Pyke , 4 byte
Coba di sini!
sumber
CJam , 21 byte
Cobalah online!
sumber
F #, 111 byte
Cobalah online!
Seq.initInfinite
menciptakan urutan yang sangat panjang dengan fungsi generator yang mengambil, sebagai parameter, indeks item. Dalam hal ini fungsi generator hanyalah fungsi identitasid
.Seq.filter
hanya memilih angka-angka yang dibuat oleh urutan tak terbatas yang prima.Seq.take
mengambiln
elemen pertama dalam urutan itu.Dan akhirnya,
Seq.sum
simpulkan mereka.sumber
cQuents , 3 byte
Cobalah online!
Penjelasan
sumber
Z
alih-alihz
MY , 4 byte
Cobalah online!
Masih menyesali tidak ada input / output implisit dalam bahasa sampah ini, sudah dua byte sebaliknya.
⎕
= inputṀ
= 1 ... termasuk prime primeΣ
= jumlah↵
= keluaransumber
APL (NARS), 27 karakter, 54 byte
{¯2π⍵} di sini akan mengembalikan n prime berbeda dari 2. Jadi {⍵ = 1: 2⋄¯2π⍵-1} akan mengembalikan n prime 2 dalam hitungan di dalamnya ...
sumber