Nomor Sphenic adalah angka yang merupakan produk tepat dari tiga bilangan prima yang berbeda. Beberapa angka Sphenic pertama adalah 30, 42, 66, 70, 78, 102, 105, 110, 114
. Ini adalah urutan A007304 dalam OEIS.
Tugas Anda:
Tulis program atau fungsi untuk menentukan apakah bilangan bulat yang dimasukkan adalah angka Sphenic.
Memasukkan:
Integer antara 0 dan 10 ^ 9, yang mungkin atau mungkin bukan Nomor Sphenic.
Keluaran:
Nilai kebenaran / kepalsuan yang menunjukkan apakah input adalah Nomor Sphenic.
Contoh:
30 -> true
121 -> false
231 -> true
154 -> true
4 -> false
402 -> true
79 -> false
0 -> false
60 -> false
64 -> false
8 -> false
210 -> false
Mencetak:
Ini adalah kode-golf , kode terpendek dalam byte yang menang.
code-golf
number
decision-problem
primes
Gryphon - Pasang kembali Monica
sumber
sumber
60
bilangan bulat?2 × 2 × 3 × 5
60
bukan angka sphenic. (menunggu klarifikasi OP)Jawaban:
Brachylog ,
63 byteCobalah online!
Penjelasan
sumber
≠
.Ṫ
juga.Ṫ
sebenarnya bukan predikat bawaan ; itu adalah variabel bawaan: daftar 3 elemen variabel. Ini adalah variabel pra-kendala yang cukup berguna dalam berbagai tantangan.bash, 43 byte
Cobalah online!
Input melalui argumen baris perintah, output
0
atau1
ke stdout.Cukup jelas; mem-parsing output
factor
untuk memeriksa bahwa faktor pertama dan kedua berbeda, yang kedua dan ketiga berbeda (mereka dalam urutan, jadi ini cukup), dan ada empat bidang (jumlah input dan tiga faktor).sumber
MATL , 7 byte
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
X=
adalah builtin paling menyedihkan yang pernah saya lihat.C,
8878126587773 + 4 (lm
) = 77 bytePenjelasan komentar yang tidak dikomentari:
Cobalah online!
sumber
i*1.0/l
gips untuk mengapung. (Dan karenal
,j
bersifat global mereka diinisialisasi ke 0 secara gratis, Anda tidak perlu melakukan itu jika fungsi hanya dipanggil sekali. Tidak yakin apa aturannya untuk itu.)CJam , 11 byte
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
Berdasarkan jawaban MATL saya.
sumber
Jelly , 8 byte
Cobalah online!
Menggunakan algoritma Luis Mendo.
Penjelasan:
sumber
Sekam , 6 byte
Cobalah online!
Mengembalikan 1 untuk nomor sphenic dan 0 sebaliknya.
Penjelasan
Dalam perikop terakhir, kesesuaian antara dua daftar berarti memiliki panjang yang sama dan distribusi nilai kebenaran / kepalsuan yang sama. Dalam hal ini kami sedang memeriksa bahwa hasil kami disusun oleh dua nilai yang benar (yaitu tidak nol).
sumber
Mathematica, 31 byte
sumber
PrimeNu
akan baik-baik sajaPrimeOmega
, dan lebih pendek.Jelly , 6 byte
Cobalah online!
Bagaimana itu bekerja
sumber
05AB1E ,
75 byteCobalah online!
Menggunakan algoritma Dennis.
sumber
Sebenarnya , 7 byte
Cobalah online!
Penjelasan:
sumber
Haskell , 59 byte
Cobalah online!
sumber
J , 15 byte
Cobalah online!
Penjelasan
sumber
Dyalog APL, 26 byte
Cobalah online!
sumber
Ruby,
814946 byteTermasuk 6 byte untuk opsi baris perintah
-rprime
.Cobalah online!
sumber
Python 3 ,
5453 byteTerima kasih kepada @xnor karena bermain golf 1 byte!
Cobalah online!
sumber
k*k%n
bukann%k**2
C,
91102 byte, dikoreksi (lagi), golfed, dan diuji untuk real time ini:/ * Ini juga berfungsi dalam 93 byte, tetapi karena saya lupa tentang aturan standar yang membatasi tipe int default pada variabel dinamis, dan tentang tidak memungkinkan nilai pengembalian implisit tanpa tugas, saya tidak akan mengambilnya:
(Siapa bilang aku tahu sesuatu tentang C? ;-)
Inilah kerangka uji dengan skrip shell di komentar:
Saya meminjam jawaban betseg sebelumnya untuk mendapatkan versi saya.
Ini adalah versi algoritma betseg saya, yang saya pilih untuk solusi:
sumber
[betseg's answer](https://codegolf.stackexchange.com/a/135203/65836)
. Anda juga dapat mengklik sunting pada jawabannya untuk menyarankan sunting padanya, jika Anda mau, itu akan menyertakan penjelasan - tidak ada janji apakah itu akan disetujui atau tidak.Pyth, 9 byte
Coba di sini.
sumber
Javascript (ES6), 87 byte
Cuplikan kode contoh:
sumber
Python 2 ,
135121 byteCobalah online!
sumber
Python 2 , 59 byte
Cobalah online!
sumber
J, 23 byte
Cobalah online!
Penanganan 8 dan 0 pada dasarnya merusak yang satu ini ...
q:
memberi Anda semua faktor utama, tetapi tidak menangani 0. sisanya hanya mengatakan "faktor unik harus sama dengan faktor" dan "jumlah mereka harus 3"sumber
60
8
.(6=]#@,~.)@q:
solusi yang mungkinJapt , 14 byte
Cobalah online!
sumber
Number.k()
, yang tidak akan berpengaruh dan hanya memeriksa apakah input memiliki 3 faktor prima, bukan 3 faktor prima yang berbeda . Itu berarti8
(dengan tiga faktor utama :)2, 2, 2
akan berlalu meskipun tidak berada di A0073048
ke dalam test case untuk alasan itu.Mathematica, 44 byte
Cobalah online!
sumber
VB.NET (.NET 4.5), 104 byte
Saya menggunakan fitur VB di mana nama fungsinya juga variabel. Pada akhir eksekusi, karena tidak ada pernyataan kembali, ia akan meneruskan nilai 'fungsi'.
Yang terakhir
A=A=3
bisa dipikirkanreturn (A == 3)
dalam bahasa berbasis C.Mulai dari 2, dan menarik bilangan prima dari iteratif. Karena saya mulai dengan bilangan prima terkecil, itu tidak dapat dibagi dengan angka komposit.
Akan mencoba untuk kedua kalinya untuk membagi dengan perdana yang sama. Jika ya (seperti bagaimana 60 dibagi dua kali dengan 2), itu akan menetapkan jumlah bilangan prima menjadi 4 (di atas maks yang diizinkan untuk nomor sphenik).
Cobalah secara Online!
sumber
Dyalog APL,
514948464543 byteCobalah online!(dimodifikasi sehingga dapat berjalan di TryAPL)
Saya ingin mengirimkan satu yang tidak bergantung pada namespace dfns apa pun, bahkan jika itu panjang .
sumber
J,
151419 byteUpaya sebelumnya:
3&(=#@~.@q:)~*
Versi sekarang:
(*/*3=#)@~:@q: ::0:
Bagaimana itu bekerja:
Ini berlaku untuk case 0, 8 dan 60 yang versi sebelumnya tidak.
sumber
Mathematica,
6657 byteMenentukan fungsi anonim.
aku s Transpose .Penjelasan
FactorInteger
memberikan daftar pasangan faktor dan eksponennya. MisalnyaFactorInteger[2250]=={{2,1},{3,2},{5,3}}
. Ini dialihkan untuk kemudahan penggunaan dan dimasukkan ke fungsiLength@#1==3&&And@@EqualTo[1]/@#2&
. Bagian pertamaLength@#1==3
,, memeriksa bahwa ada 3 faktor unik, sedangkan yang kedua,And@@EqualTo[1]/@#2
memeriksa bahwa semua eksponen adalah 1.sumber
PHP, 66 byte:
Jalankan sebagai pipa dengan
-nR
atau coba online .Loop tak terbatas untuk
0
; masukkan$n&&
sebelum--$n
untuk memperbaikinya.kerusakan
contoh
argumen =
30
:faktor prima adalah
2
,3
dan5
pembagi lainnya adalah
1
, 2 * 3 =6
, 2 * 5 =10
dan 3 * 5 =15
produk mereka:
1*2*3*5*6*10*15
adalah27000
==30**3
sumber
Python 99 byte
Pengiriman pertama. Maafkan saya jika saya melakukan sesuatu yang salah. Agak konyol, menghitung jumlah faktor
n
, dan kemudian berapa kalin
dibagi oleh masing-masing (dengan menambahkan 10 ** 9).Saya cukup yakin ada beberapa cara mudah untuk memotong ~ 10-20 karakter, tetapi saya tidak melakukannya.
Juga ini adalah intractably lambat pada 10 ** 9. Bisa dibuat oke dengan mengubah
'...a+=1\n'*n
ke'...a+=1\n'*n**.5
, karena kita hanya perlu pergi ke akar kuadrat darin
.sumber