Tugasnya adalah menemukan faktor non-sepele dari angka komposit.
Tulis kode yang menemukan faktor non-sepele dari nomor komposit secepat mungkin dengan kode Anda yang panjangnya tidak lebih dari 140 byte. Output seharusnya menjadi faktor yang Anda temukan.
Kode Anda dapat mengambil input dan memberikan output dengan cara apa pun yang nyaman termasuk misalnya sebagai argumen untuk suatu fungsi.
Uji kasus yang mencantumkan semua faktor (Anda hanya perlu menampilkan satu)
187: 11 17
1679: 23 73
14369648346682547857: 1500450271 9576890767
34747575467581863011: 3628273133 9576890767
52634041113150420921061348357: 2860486313 5463458053 3367900313
82312263010898855308580978867: 264575131106459 311111111111113
205255454905325730631914319249: 2860486313 71755440315342536873
1233457775854251160763811229216063007: 1110111110111 1000000000063 1111111999999
1751952685614616185916001760791655006749: 36413321723440003717 48112959837082048697
Saya tidak akan memberi skor jawaban Anda pada kasus uji sulit berikut yang mungkin menarik untuk diuji:
513231721363284898797712130584280850383: 40206835204840513073 12764787846358441471
Skor
Skor Anda adalah waktu gabungan untuk memperhitungkan semua kasus uji di atas dengan penalti 10 menit untuk setiap faktorisasi yang gagal (semua dibulatkan ke detik terdekat). Kode Anda juga harus bekerja untuk bilangan bulat lain, yang seharusnya tidak hanya berupa kode jawaban ini.
Saya akan menghentikan kode Anda setelah 10 menit.
Jika dua orang mendapatkan skor yang sama maka jawaban pertama menang.
Batasan
Kode Anda tidak dapat menggunakan fungsi bawaan atau pustaka yang melakukan faktorisasi bilangan bulat. Anda dapat mengasumsikan input tersebut membutuhkan kurang dari 256 bit. Semua angka input akan menjadi gabungan.
Bagaimana saya akan mengatur waktu?
Saya benar-benar akan berjalan time ./myprog
di sistem Ubuntu saya untuk melakukan pengaturan waktu jadi tolong sediakan juga program lengkap untuk saya jalankan yang mencakup fungsi apa pun yang telah Anda tetapkan.
Catatan untuk bahasa yang dikompilasi
Waktu kompilasi harus tidak lebih dari 1 menit pada mesin saya.
Apakah ini mungkin?
Jika Anda mengabaikan batasan ruang, maka masing-masing dapat diperhitungkan dalam waktu kurang dari 2 detik di komputer saya menggunakan kode Python murni + pypy.
Jadi apa yang dimaksud dengan algoritma pemfaktoran non-sepele?
Algoritma rho Pollard cepat dan cocok untuk bermain golf. Tentu saja ada banyak cara lain untuk faktor bilangan bulat juga.
Yang lebih cepat lagi adalah saringan Quadratic . Sepertinya tantangan serius untuk memerasnya menjadi 140 byte.
Skor terkemuka
- SEJPM , penalti 10 menit untuk kasus uji terakhir + 16 detik di Haskell
2
atau 2, 2
?
2 ** 1024
?