Tulis program yang akan menguji keutamaan angka yang ditentukan, dan berikan output sebagai nilai Boolean (True is prime). Tes utama Anda dapat (tetapi tidak harus) valid untuk nomor 1.
Inilah intinya: program Anda sendiri harus dijumlahkan ke bilangan prima. Konversi setiap karakter (termasuk spasi) ke nilai Unicode / ASCII ( tabel ). Kemudian, tambahkan semua angka itu bersama-sama untuk mendapatkan jumlah program Anda.
Misalnya, ambil program yang tidak terlalu bagus yang saya tulis dengan Python 3.3:
q=None
y=int(input())
for x in range(2,int(y**0.5)+1):
if y%x==0:
q=False
if not q:
q=True
print(q)
Jika Anda mengonversi semua karakter ke nilai Unicode / ASCII yang sesuai, Anda mendapatkan:
113 61 78 111 110 101 10 121 61 105 110 116 40 105 110 112 117 116 40 41 41 10 102 111 114 32 120 32 105 110 32 114 97 110 103 101 40 50 44 105 110 116 40 121 42 42 48 46 53 41 43 49 41 58 10 32 32 32 32 105 102 32 121 37 120 61 61 48 58 10 32 32 32 32 32 32 32 32 113 61 70 97 108 115 101 10 105 102 32 110 111 116 32 113 58 10 32 32 32 32 113 61 84 114 117 101 10 112 114 105 110 116 40 113 41
Anda kemudian dapat menemukan jumlah angka-angka itu secara manual atau dengan program Anda sendiri. Program khusus ini berjumlah 8293, yang merupakan bilangan prima.
Tentu saja, ini Code Golf, jadi semakin kecil Anda dapat membuat program, semakin baik. Seperti yang ditunjukkan oleh pengguna lain, program ini tidak terlalu golf.
Beberapa aturan:
Input yang valid termasuk STDIN dan prompt (tidak ada fungsi, itu hanya cara untuk menambahkan kode tambahan gratis). Spasi diizinkan, tetapi hanya jika itu penting untuk fungsionalitas program Anda. Output harus berupa output, tidak hanya disimpan dalam variabel atau dikembalikan (gunakan cetak, STDOUT, dll.)
Bendera dapat digunakan dan harus dihitung secara harfiah, tidak diperluas. Komentar tidak dibolehkan. Adapun karakter non-ASCII, mereka harus ditugaskan ke nilai di masing-masing pengkodean.
Pastikan untuk mencantumkan ukuran dan jumlah program Anda. Saya akan menguji untuk memastikan program yang valid.
Semoga berhasil!
Berikut ini cuplikan untuk menghitung jumlah program Anda dan memeriksa apakah programnya prima:
Jawaban:
Halo Dunia! , 13 byte,
1193
sumber
Ruby, jumlah 3373, 37 byte
sumber
Microscript II, 2 byte (jumlah 137)
Microscript II, 4 byte (jumlah 353)
Saya sebenarnya cukup terkejut bahwa keduanya memiliki jumlah byte primer.
sumber
Japt , 2 byte,
191
U
:85
j
:106
Cobalah online!
sumber
Pyth, 2 byte,
127
Cobalah online
Output
1
untuk bilangan prima,0
untuk non-bilangan prima./
memiliki titik kode47
.P
memiliki titik kode80
.Bagaimana itu bekerja:
sumber
Haskell, 52 byte, 4421
Teorema Wilson.
sumber
::IO Int
Benar - benar tidak perlu kecuali jika itu cara terpendek Anda bisa mendapatkan jumlah prima.Python 2, 50 byte,
4201
Berfungsi untuk 1. Output positif jika prima, atau nol jika tidak.
Cobalah online
Python 2, 44 byte,
3701
Tidak berfungsi untuk 1. Menghasilkan Boolean.
Cobalah online
sumber
JavaScript (ES6), 47 byte,
3541
Ini sangat didasarkan pada fungsi pengujian primality produk ETH , yang dapat ditemukan di sini .
sumber
05AB1E , 2 byte,
173
Penjelasan:
Cobalah online!
sumber
PHP, 38 byte, jumlah 2791
Fakta menyenangkan: Dengan
$h
alih-alih$c
, jumlahnya akan menjadi2801
(juga prima), dan representasi binernya101011110001
dibaca sebagai desimal juga merupakan bilangan prima.mengambil argumen baris perintah, cetakan
1
atau string kosong. Jalankan dengan-r
.Kode diambil dari fungsi utama saya sendiri (lihat posting asli jika Anda bisa).
sumber
R, 27
32byte, jumlah 22432609Menyimpan 5 byte berkat @rturnbull
Ini memanfaatkan fungsi isprime pustaka gmp.
sumber
cat(!!gmp::isprime(scan()))
lebih pendek 5 byte, dan jumlah untuk2243
, juga prima.Python 2, 44 byte, byte-sum 3109
Ini adalah implementasi 44 byte xnor dengan nama variabel bernilai terendah yang menghasilkan jumlah byte primer.
Mencetak
1
jika prima dan0
jika tidak.sumber
Jelly 6 byte , byte-jumlah 691
mencetak
1
jika prima dan0
jika tidak.TryItOnline!
Bytes dalam heksadesimal adalah
93 0D D5 2C CD 45
(lihat halaman kode ), atau dalam desimal147 13 213 44 205 69
yang berjumlah 691, yang merupakan prime.Bagaimana?
The
Æḍ
fungsi adalah seperti yang prima dan negations mereka kembali satu sementara bilangan bulat lain tidak (komposit dan negations mereka kembali jumlah yang lebih besar dari satu, satu dan minus satu kembali nol dan nol kembali, anehnya, minus satu).The
Ṡ
fungsi adalah seperti yang bilangan bulat negatif kembali minus satu, nol kembali nol dan bilangan bulat positif kembali satu.Dengan demikian kedua fungsi hanya mengembalikan nilai yang sama untuk bilangan prima.
Perhatikan bahwa program 3 byte
ƓÆP
yang secara langsung menguji apakah input dari STDIN adalah prima sayangnya bukan program prime-sum (240).Pengujian untuk kesetaraan menggunakan
=
(sama dengan),e
(ada di), atau⁼
(sama dengan non-vektor) untuk 5 byte juga tidak menghasilkan program prime-sum.Alternatif (mungkin tidak dapat diterima) 4 byte, jumlah 571
Jika pembatasan I / O masih memungkinkan program lengkap yang mengambil argumen.
... menggunakan prinsip yang sama seperti di atas, di mana
⁼
kesetaraan non-vektorisasi (aspek non-vektorisasi tidak berpengaruh karena toh tidak ada yang di-vector-kan). Nilai hex0D D5 8C CD
adalah13 213 140 205
dalam desimal yang berjumlah 571, sebuah bilangan prima.Sekali lagi perhatikan bahwa program 2 byte
ÆP
tidak memiliki jumlah prima (93).sumber
ƓÆPG
(311) danÆPF
(163) seharusnya baik-baik saja, saya pikir?ƓÆḍ,ṠE
, nilainya16183
, yang kebetulan adalah yang utama!ƓÆPG
OK. Saya juga bertanya apakah program yang mengambil input daripada penggunaan STDIN dapat diterima.ÆP¥
3 byte dan 97.CJam , 4 byte, byte-sum 439
Menggunakan uji sifat bawaan.
Cobalah online!
Solusi alternatif, 4 byte, jumlah 461
sumber
Mathematica, 21 byte,
1997
Input[]
membaca garis input (dari STDIN jika tidak ada ujung depan yang digunakan, melalui kotak dialog jika ujung depan Mathematica digunakan),Print@*PrimeQ
adalah komposisi (@*
) dariPrint
danPrimeQ
fungsi, dan@
merupakan notasi fungsi awalan.sumber
Perl 6 ,
2422 byte,1949
Ketiga karakter spasi putih diperlukan.
(Perl 6 tidak peduli apa jenis karakter spasi mereka, meskipun, jadi saya memilih baris baru bukan ruang yang lebih umum digunakan untuk yang kedua ...)
sumber
Pyth, 4 byte,
367
Coba di sini!
sumber
Pip , 8 byte,
511
Saya menulis pemeriksa prima, dan jumlahnya prima. Mudah. Verifikasi input 1-30: Coba online!
Penjelasan
sumber
Pari / GP , 23 byte,
2111
Cobalah online!
sumber
J, 18 Bytes,
1103
Tidak jauh dari optimal, paling tidak saya bisa golf tes program primality penuh adalah 17 Bytes:,
echo(p:[:".1!:1)1
yang sayangnya berjumlah 1133 = 11 * 103.Sayangnya saya tidak tahu bagaimana cara mendapatkan input keyboard bekerja pada TIO, jadi belum ada tautan.
Penjelasan:
Memvalidasi program:
sumber
C (gcc) ,
6260 byte, 4583Cukup mudah. Output * jika prima, jika tidak output spasi. Tidak berfungsi untuk 1.
-2 Berkat l4m2
Cobalah online!
sumber
n;main(i){for(scanf("%d",&n);++i<n;)n=n%i?n:0;puts("*"+!n);}
mungkin perlu mengubah beberapa nama variabel untuk prime sumAWK , 36 byte, byte-jumlah 2239
Cobalah online!
Output
0
jika tidak prima dan1
untuk prima. Jelas bukan kode yang paling efisien, karena memeriksa setiap bilangan bulat lebih besar daripada1
melihat apakah itu membagi input.sumber
Excel (57 byte, jumlah kode 3547)
Excel tidak benar-benar memiliki "input" seperti itu, tetapi rumus ini mengharapkan angka yang akan diuji berada di A1 dan output ke sel apa pun yang Anda masukkan. Ini adalah rumus array, jadi tekan Ctrl-Shift-Enter untuk memasukkan itu, bukan Enter.
sumber
Java 8, 114 byte, Perdana 10037
Cobalah online.
Penjelasan:
Saya telah menggunakan
x
bukannyai
membuat jumlah unicode menjadi prima. Verifikasikan jumlah unicode di sini.sumber
Jelly , 4 byte, Σ = 239
Cobalah online!
Bukti: Coba online! (ambil indeks berbasis 1 dari karakter program dari halaman kode Jelly, turunkan untuk menjadikannya berbasis 0, jumlah lalu periksa apakah hasilnya prima).
sumber
SmileBASIC, 42 byte,
2687
Output 1 (benar) jika angkanya prima, sebaliknya 0 (salah).
Nama-nama variabel tidak hanya dipilih untuk membuat program utama.
N
adalah n Banyaknya untuk menguji,D
adalah d ivisor, danP
melacak apakah N adalah p rime.sumber
Bertanya-tanya , 7 byte,
537
Mungkin ada cara yang lebih baik ...
sumber
Rust, 190 byte, skor 15013
Tidak disatukan
Tidak berfungsi untuk 1
sumber
Stax , 349
Jalankan dan debug itu
sumber
|pQ
bekerja untuk skor 317. Jika menukar kebenaran / kepalsuan diizinkan,|p!
bekerja juga untuk 269.Bisikan v2 , 33 byte
Cobalah online!
44381
Bagaimana itu bekerja
Ini ditunjukkan dalam urutan yang dijalankan di:
sumber