Diberikan dua input q n
menentukan apakah q
residu kuadratik n
.
Yaitu, adakah di x
mana x**2 == q (mod n)
atau q
mod persegi n
?
Memasukkan
Dua bilangan bulat q
dan n
, di mana q
dan n
adalah bilangan bulat apa pun 0 <= q < n
.
Keluaran
Kebenaran atau kebohongan.
Secara opsional, cetak semua (atau semua) x
yang adax**2 == q (mod n)
Contohnya
>>> quadratic_residue(1, 5)
True
>>> quadratic_residue(3, 8)
False
>>> quadratic_residue(15, 22)
True
Aturan
Kode Anda harus berupa program atau fungsi. Masukan bisa dalam urutan apa pun. Ini adalah kode golf, jadi kode terpendek dalam byte menang.
Jika ada yang tidak jelas atau perlu diperbaiki, beri tahu saya.
Bonus
- Bonus 2-byte jika fungsi Anda menerima
q
bilangan bulat sembarang.
Katalog
var QUESTION_ID=65329;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk";var OVERRIDE_USER=47581;var answers=[],answers_hash,answer_ids,answer_page=1,more_answers=true,comment_page;function answersUrl(index){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(index,answers){return"http://api.stackexchange.com/2.2/answers/"+answers.join(';')+"/comments?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){answers.push.apply(answers,data.items);answers_hash=[];answer_ids=[];data.items.forEach(function(a){a.comments=[];var id=+a.share_link.match(/\d+/);answer_ids.push(id);answers_hash[id]=a});if(!data.has_more)more_answers=false;comment_page=1;getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){data.items.forEach(function(c){if(c.owner.user_id===OVERRIDE_USER)answers_hash[c.post_id].comments.push(c)});if(data.has_more)getComments();else if(more_answers)getAnswers();else process()}})}getAnswers();var SCORE_REG=/<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;var OVERRIDE_REG=/^Override\s*header:\s*/i;function getAuthorName(a){return a.owner.display_name}function process(){var valid=[];answers.forEach(function(a){var body=a.body;a.comments.forEach(function(c){if(OVERRIDE_REG.test(c.body))body='<h1>'+c.body.replace(OVERRIDE_REG,'')+'</h1>'});var match=body.match(SCORE_REG);if(match)valid.push({user:getAuthorName(a),size:+match[2],language:match[1],link:a.share_link,});else console.log(body)});valid.sort(function(a,b){var aB=a.size,bB=b.size;return aB-bB});var languages={};var place=1;var lastSize=null;var lastPlace=1;valid.forEach(function(a){if(a.size!=lastSize)lastPlace=place;lastSize=a.size;++place;var answer=jQuery("#answer-template").html();answer=answer.replace("{{PLACE}}",lastPlace+".").replace("{{NAME}}",a.user).replace("{{LANGUAGE}}",a.language).replace("{{SIZE}}",a.size).replace("{{LINK}}",a.link);answer=jQuery(answer);jQuery("#answers").append(answer);var lang=a.language;lang=jQuery('<a>'+lang+'</a>').text();languages[lang]=languages[lang]||{lang:a.language,lang_raw:lang.toLowerCase(),user:a.user,size:a.size,link:a.link}});var langs=[];for(var lang in languages)if(languages.hasOwnProperty(lang))langs.push(languages[lang]);langs.sort(function(a,b){if(a.lang_raw>b.lang_raw)return 1;if(a.lang_raw<b.lang_raw)return-1;return 0});for(var i=0;i<langs.length;++i){var language=jQuery("#language-template").html();var lang=langs[i];language=language.replace("{{LANGUAGE}}",lang.lang).replace("{{NAME}}",lang.user).replace("{{SIZE}}",lang.size).replace("{{LINK}}",lang.link);language=jQuery(language);jQuery("#languages").append(language)}}
body{text-align:left!important}#answer-list{padding:10px;width:290px;float:left}#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="language-list"> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody id="languages"> </tbody> </table> </div> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table>
code-golf
math
arithmetic
number-theory
Sherlock9
sumber
sumber
0 <= q < n
. Anda mungkin harus mengklarifikasi apakah asumsi ini dapat diterima atau tidak.q
dann
menjadi dua bilangan bulat, tapi jadi saya tidak memecahkan jawaban yang ada,0 <= q < n
q
Jawaban:
Pyth, 9 byte
Cobalah online: Demonstrasi atau Test Suite
Penjelasan:
sumber
n
dan selanjutnyaq
. Jadi coba9\n7
sebagai input.Mathematica, 25 byte
Mathematica, menjadi Mathematica, secara alami memiliki dasar untuk menghitung modul modul, melalui
PowerMod
. Jika ada solusi, solusi layak terkecil dikembalikan, jika tidak, ekspresi asli (ditambah pesan).Untuk mendapatkan hasil sebenarnya / palsu, kami melewatkan hasilnya
AtomQ
, yang memeriksa apakah ekspresi dapat dipecah. Bilangan bulat atom, kembaliTrue
, sementara non-atomPowerMod[q,1/2,n]
kembaliFalse
Terima kasih kepada @ MartinBüttner untuk tips golf dan fungsi berburu bersama saya.
sumber
PowerMod
bisa mengambil argumen fraksional!Par ,
119 byteSetiap karakter hanya menggunakan satu byte; Lihat di sini .
Penjelasan
Dihapus dua byte berkat Jakube.
sumber
LabVIEW,
1615 byte SetaraDihitung menurut meta post saya .
sumber
Haskell, 31 byte
Disimpan 3 byte berkat Martin Büttner.
sumber
q#n=any(\x->mod(x*x)n==q)[0..n]
dan untuk 30 byte:q#n=[x|x<-[0..n],mod(x*x)n==q]
yang mengembalikan daftar x / daftar kosong alih-alih Benar / Salah.Matlab, 29
Fungsi ini mengkuadratkan semua angka dari 0 hingga n dan memeriksa apakah kuadrat minus q adalah nol mod n.
sumber
Prolog (SWI), 34 byte
Kode:
Penjelasan:
Memeriksa apakah bujur sangkar antara 0 dan N meninggalkan Q saat dibagi dengan N .
Contoh:
Cobalah online di sini
sumber
CJam, 11 byte
Blok yang tidak disebutkan namanya ini mengharapkan
q n
pada tumpukan dan meninggalkan[q]
pada tumpukan sebagai nilai kebenaran atau""
sebagai nilai palsu.Uji di sini.
Kredit untuk Sp3000 yang juga datang dengan solusi ini tetapi "tidak bisa diganggu posting".
Penjelasan
sumber
J, 9 byte
Pemakaian:
Penjelasan:
Beberapa J mekanik trivia:
Fungsi dikelompokkan oleh 3 iteratif dari kanan dan jika ada satu kiri, seperti dalam kasus kami (
e. (] | (i. ^ 2:))
), bagian yang dikelompokkan disebut dengan argumen kanan (N
) dan fungsi kiri (e.
, "berisi") disebut dengan kiri asli argumen (Q
) dan hasil dari bagian yang dikelompokkan.(
e.]|i.*i.
dane.]|2^~i.
juga menyelesaikan masalah dengan panjang yang sama.)Cobalah online di sini.
sumber
Mathematica, 27 byte
Pemakaian:
sumber
Javascript ES6, 42 byte
Kredit ke @apsilers untuk byte serius disimpan!
sumber
...Array
sintaks? Saya masih belum mengerti.[...Array(5)]
menghasilkan arrayundefined
, sama sepertiArray(5)
sendiri. Saya benar-benar bingung, karena menghapus sintaks aneh dan menggunakan hanyaArray(5)
memecah kode. Apakah ada dokumentasi untuk ini? tangkapan layar my consoleArray(5)
adalah array tanpa properti sendiri kecualilength
. Penyebaran array[...x]
mengisi properti numerik yang hilang hinggalength
. Themap
Fungsi hanya dapat beroperasi pada sifat yang masih ada, yangArray(5)
sendiri tidak memiliki. Misalnya, cobaArray(5).hasOwnProperty(0)
(false) versus[...Array(5)].hasOwnProperty(0)
(true).some
lebih pendek dan (saya pikir) setara:(q,n)=>[...Array(n)].some((x,y)=>y*y%n==q)
Serius , 20 byte
Mengambil input pada dua baris:,
q
lalun
. Output yang0
jikaq
tidak residu kuadratn
, yang lain angka positif yang mewakili berapa banyakx
di[1, q]
(inklusif) memuaskanx^2 = q (mod n)
.Cobalah secara online (permalink memiliki lebih banyak masalah, tetapi sementara itu Anda dapat menyalin dan menempelkan kode ke halaman kosong )
Penjelasan:
sumber
Python 3,
4140 byteMengambil
q
dann
dan menentukan apakahq
ada dalam daftar kotak dari0
kuadrat ken-1
kuadrat.sumber
Ruby,
3331 byteDisimpan dua byte berkat Vasu Adari.
Seperti biasa, Ruby tidak akan mengalahkan bahasa golf mana pun, tetapi penampilannya bagus di sini.
sumber
->q,n{}
.Julia, 30 byte
Ini sebuah fungsi
f
yang menerima dua bilangan bulat dan mengembalikan boolean.Tidak Disatukan:
sumber
JavaScript (ES6), 43 byte
Penjelasan
Uji
Tampilkan cuplikan kode
sumber
𝔼𝕊𝕄𝕚𝕟, 13 karakter / 25 byte
Try it here (Firefox only).
sumber
15 22
dan katanyafalse
.Japt, 10 byte
Golf Japt resmi pertama saya! Terima kasih kepada @ETHProductions untuk menghemat satu byte!
Tidak Terikat / Penjelasan
Cobalah online!
sumber
0oV
setara denganVo
.C # 6 (.Net Framework 4.6) di LinqPad, 60 Bytes
sumber
Bima Sakti 1.0.2 , 41 byte
Ini mengharapkan
q
dann
hanya di stack. Ini output1
atau0
untuk kebenaran dan nilai-nilai palsu, masing-masing.sumber
Pari / GP , 25 byte
Cobalah online!
sumber
JavaScript (Node.js) , 33 byte
Cobalah online!
Kenapa tidak ada yang melakukan ini
sumber