Anehnya, saya tidak berpikir kita memiliki pertanyaan kode-golf untuk menentukan apakah suatu angka semiprime .
Semiprime adalah bilangan alami yang merupakan produk dari dua bilangan prima (tidak harus berbeda).
Cukup sederhana, tetapi konsep yang sangat penting.
Diberikan bilangan bulat positif, tentukan apakah itu semiprime. Keluaran Anda bisa dalam bentuk apa pun asalkan memberikan hasil yang sama untuk nilai apa pun yang benar atau salah. Anda juga dapat menganggap input Anda cukup kecil sehingga kinerja atau overflow tidak menjadi masalah.
Kasus uji:
input -> output
1 -> false
2 -> false
3 -> false
4 -> true
6 -> true
8 -> false
30 -> false (5 * 3 * 2), note it must be EXACTLY 2 (non-distinct) primes
49 -> true (7 * 7) still technically 2 primes
95 -> true
25195908475657893494027183240048398571429282126204032027777137836043662020707595556264018525880784406918290641249515082189298559149176184502808489120072844992687392807287776735971418347270261896375014971824691165077613379859095700097330459748808428401797429100642458691817195118746121515172654632282216869987549182422433637259085141865462043576798423387184774447920739934236584823824281198163815010674810451660377306056201619676256133844143603833904414952634432190114657544454178424020924616515723350778707749817125772467962926386356373289912154831438167899885040445364023527381951378636564391212010397122822120720357
-> true, and go call someone, you just cracked RSA-2048
Ini kode-golf , jadi aturan standar berlaku!
Jawaban:
Brachylog , 2 byte
Pada dasarnya sebuah port dari jawaban Fatalize terhadap tantangan angka Sphenic.
Cobalah online!
Bagaimana?
sumber
Ċ
sebenarnya merupakan daftar bawaan dari dua variabel; sebagai bahasa deklaratif, outputnya adalah, secara default, tes untuk kepuasan (mis.ḋ
sendiri akan menghasilkantrue.
untuk bilangan bulat non-negatif).c6 eb
.Sekam , 4 byte
Lihat ma no Unicode!
Cobalah online!
Bagaimana?
sumber
Mathematica, 16 byte
PrimeOmega
menghitung jumlah faktor prima, menghitung multiplisitas.sumber
SemiprimeQ
PrimeOmega
Pyth , 4 byte
Suite uji .
Bagaimana?
sumber
Python 3 , 54 byte
Cobalah online!
The verson sebelumnya memiliki beberapa masalah pembulatan pada angka kubus besar (
125
,343
, dll)ini menghitung jumlah pembagi (tidak hanya bilangan prima), jika memiliki
1
atau2
mengembalikanTrue
.Satu-satunya pengecualian adalah ketika angka memiliki lebih dari dua faktor utama tetapi hanya dua pembagi. Dalam hal ini ia adalah kubus sempurna dari suatu prima (pembagi-nya adalah akar kubusnya dan akar kuadratnya kuadrat).
x**3==n
akan membahas kasus ini, menambahkan satu ke entri root cube mendorong jumlah hingga hitungan 3 dan menghentikan false-positive. terima kasih Jonathan Allan untuk menulis dengan penjelasan yang indah inisumber
n**(1/3)%1>0<sum...
harus bekerja.Ruby ,
5648 byteCobalah online!
Bagaimana itu bekerja:
Terima kasih Value Ink untuk ide yang menghemat 8 byte.
sumber
c
mulai saja dari 0 dan menghitung, alih-alih menjadikannya array yang Anda tambahkan semua faktor? Dengan begitu Anda menghilangkan kebutuhan untuk menggunakansize
pada akhirnyaMathematica,
3129 bytesumber
Neim , 4 byte
Cobalah online!
sumber
𝐏
,𝐥
,δ
, dan𝔼
sebagai single-byte.Python 2 , 67 byte
Cobalah online!
-10 byte terima kasih kepada @JonathanAllan!
Kredit untuk algoritma faktorisasi Perdana diberikan kepada Dennis (dalam versi awal)
sumber
JavaScript (ES6), 47 byte
Mengembalikan boolean.
Demo
Tampilkan cuplikan kode
sumber
Mathematica 32 byte
Berkat ngenesis selama 1 byte disimpan
sumber
;;
alih-alihAll
.Jelly , 5 byte
Cobalah online!
Penjelasan
sumber
Sebenarnya , 4 byte
Cobalah online!
sumber
05AB1E, 4 byte
Cobalah online!
Bagaimana?
sumber
MATL, 5 byte
Cobalah online!
Penjelasan
Yf
- Faktor utama.n
- Panjangnya.2=
- Apakah sama dengan 2?sumber
Dyalog APL, 18 byte
Cobalah online!
Bagaimana?
⎕CY'dfns'
- imporpco
3pco⎕
- berjalanpco
di input dengan argumen kiri 3 (faktor prima)2=≢
- panjang = 2?sumber
Gaia , 4 byte
4 byte sepertinya panjang yang umum, saya bertanya-tanya mengapa ...: P
Cobalah online!
Penjelasan
sumber
Python dengan SymPy 1.1.1 ,
5744 byte-13 byte berkat alephalpha (gunakan 1.1.1's
primeomega
)Cobalah online!
sumber
lambda n:primeomega(n)==2
R , 67 byte
Cobalah online!
sumber
Rubi , 35 + 8 = 43 byte
Menggunakan
-rprime
bendera untuk membuka kunciprime_division
fungsi.Cobalah online!
sumber
Java 8,
6961 byte-8 byte berkat @Nevay .
Coba di sini.
sumber
else++r;
) untuk menyimpan 8 byten->{int r=1,c=2;for(;r++<n;)for(;n%r<1;n/=r)c--;return c==0;}
.Python 2 ,
7565 byteCobalah online!
Semua kredit untuk jawaban xnor untuk kode faktorisasi prima asli.
sumber
C #, 112 Bytes
Dengan pemformatan diterapkan:
Dan sebagai program uji:
Yang memiliki output:
sumber
Pari / GP , 17 byte
Cobalah online!
sumber
Retina , 45 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Konversikan ke unary.
Coba cari dua faktor.
Pastikan kedua faktor prima.
Pastikan dua faktor ditemukan.
sumber
Python 2, 90 byte
f
membutuhkan integer yangn
lebih besar atau sama dengan1
, mengembalikan boolean.Cobalah online!
Kasus uji:
sumber
J , 6 byte
5 byte akan berfungsi sebagai satu kali:
Saya percaya saya perlu enam ketika saya mendefinisikan fungsi:
sumber
Pyke , 5 byte
Coba di sini!
sumber
Japt ,
65 byteUji secara online
Penjelasan
Apakah hampir sama dengan sebagian besar jawaban lainnya:
k
dapatkan berbagai faktor utama,Ê
dapatkan panjangnya dan¥
periksa kesetaraannya2
.sumber
÷k o)j
juga berfungsi, sayangnya panjangnya sama :-(Perl 6 , 43 byte
Cobalah online!
f
adalah faktor terkecil yang lebih besar dari 1 argumen input$_
, atauNil
jika$_
1. Nilai kembalinya fungsi true jikaf
benar (yaitu, tidakNil
) DAN argumen input dibagi dengan faktor prima.Jika
$_
itu sendiri prima, makaf
akan sama dengan$_
, dan$_ / f
adalah 1, yang tidak prima, jadi rumusnya bekerja dalam kasus itu juga.sumber