原始测试据/h1>
有关……据/h4>
- 计算机科学据/S.P.一种N>据S.P.一种Nclass="chevron">>据/S.P.一种N>据D.一世v class="chapter">
循环据/一种>据/D.一世v>
- 计算机科学据/S.P.一种N>据S.P.一种Nclass="chevron">>据/S.P.一种N>据D.一世v class="chapter">
密码学据/一种>据/D.一世v>
内容据/h4>
审判部门据/h2>
这是最简单的确定性原始测试之一,通过天然检查数量是素数的条件。它使用了素数不是由本身以外的任何其他正整数阻塞的事实据S.P.一种Nclass="katex">
1据/S.P.一种N>据/S.P.一种N>,所以我们可以将其转化为其对接性:如果一个数字被其他一些正整数分开,而且据S.P.一种Nclass="katex">
1据/S.P.一种N>据/S.P.一种N>,它是复合的。据/P.>据D.一世v class="codex-static-code" data-controller="app/codex/controllers:expandableCode">
1 2 3 4 5 6据/P.R.E.>据/D.一世v>
def据/S.P.一种N>据S.P.一种Nclass="nf">isprime.据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="p">):据/S.P.一种N>据S.P.一种Nclass="k">如果据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="o">据据/S.P.一种N>据S.P.一种Nclass="mi">2据/S.P.一种N>据S.P.一种Nclass="p">:据/S.P.一种N>据S.P.一种Nclass="k">返回据/S.P.一种N>据S.P.一种Nclass="kc">错误的据/S.P.一种N>据S.P.一种Nclass="k">为了据/S.P.一种N>据S.P.一种Nclass="n">一世据/S.P.一种N>据S.P.一种Nclass="ow">在据/S.P.一种N>据S.P.一种Nclass="n">Xrange.据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="mi">2据/S.P.一种N>据S.P.一种Nclass="p">那据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="p">):据/S.P.一种N>据S.P.一种Nclass="c1">#从2到n-1据/S.P.一种N>据S.P.一种Nclass="k">如果据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="o">%据/S.P.一种N>据S.P.一种Nclass="n">一世据/S.P.一种N>据S.P.一种Nclass="o">==据/S.P.一种N>据S.P.一种Nclass="mi">0.据/S.P.一种N>据S.P.一种Nclass="p">:据/S.P.一种N>据S.P.一种Nclass="c1">#n是可被我的据/S.P.一种N>据S.P.一种Nclass="k">返回据/S.P.一种N>据S.P.一种Nclass="kc">错误的据/S.P.一种N>据S.P.一种Nclass="k">返回据/S.P.一种N>据S.P.一种Nclass="kc">真的据/S.P.一种N>据/code>
但是,没有必要检查所有数字据S.P.一种Nclass="katex">
2据/S.P.一种N>据/S.P.一种N>到据S.P.一种Nclass="katex">
N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据/S.P.一种N>.据/P.>据P.>据/P.>据D.一世v class="problem-modal-container anchor" id="problem-he-aint-no-ramanujan" data-controller="app/solvables:wikiModalProblem">
您的朋友已经编写了一个程序来检查是否有号码据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>是质数。它非常简单,通过检查是否工作据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>通过每次2的每个数字来分隔据S.P.一种Nclass="katex">
N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据/S.P.一种N>.当你看到这个,你诅咒你的朋友,告诉他他在浪费时间。据/P.>据P.>如果你的朋友不想浪费时间,他需要检查的最大数字(大约)是什么,然后他才能确定任何数字据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>是素数吗?据/P.>据/D.一世v>
假设据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>是复合材料,所以据S.P.一种Nclass="katex">
N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">P.据/S.P.一种N>据S.P.一种Nclass="mord mathdefault" style="margin-right:0.03588em;">问:据/S.P.一种N>据/S.P.一种N>为了据S.P.一种Nclass="katex">
2据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">≤.据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">P.据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">问:据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">≤.据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据/S.P.一种N>.我们声称至少有一个据S.P.一种Nclass="katex">
P.据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">问:据/S.P.一种N>据/S.P.一种N>不大于据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>
.的确,如果两者都大于据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>
, 然后据S.P.一种Nclass="katex">
P.据/S.P.一种N>据S.P.一种Nclass="mord mathdefault" style="margin-right:0.03588em;">问:据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">>据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">N据/S.P.一种N>据/S.P.一种N>
⋅据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">N据/S.P.一种N>据/S.P.一种N>
=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">N据/S.P.一种N>据/S.P.一种N>,一个矛盾。因此,每当据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>是复合材料,其中一个因素不大于据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>
,所以我们可以修改上面的范围端点:据/P.>据D.一世v class="codex-static-code" data-controller="app/codex/controllers:expandableCode">
1 2 3 4 5 6 7据/P.R.E.>据/D.一世v>
从据/S.P.一种N>据S.P.一种Nclass="nn">数学据/S.P.一种N>据S.P.一种Nclass="kn">进口据/S.P.一种N>据S.P.一种Nclass="n">SQRT.据/S.P.一种N>据S.P.一种Nclass="k">def据/S.P.一种N>据S.P.一种Nclass="nf">isprime.据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="p">):据/S.P.一种N>据S.P.一种Nclass="k">如果据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="o">据据/S.P.一种N>据S.P.一种Nclass="mi">2据/S.P.一种N>据S.P.一种Nclass="p">:据/S.P.一种N>据S.P.一种Nclass="k">返回据/S.P.一种N>据S.P.一种Nclass="kc">错误的据/S.P.一种N>据S.P.一种Nclass="k">为了据/S.P.一种N>据S.P.一种Nclass="n">一世据/S.P.一种N>据S.P.一种Nclass="ow">在据/S.P.一种N>据S.P.一种Nclass="nb">范围据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="mi">2据/S.P.一种N>据S.P.一种Nclass="p">那据/S.P.一种N>据S.P.一种Nclass="nb">int据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="n">SQRT.据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="p">)))据/S.P.一种N>据S.P.一种Nclass="o">+据/S.P.一种N>据S.P.一种Nclass="mi">1据/S.P.一种N>据S.P.一种Nclass="p">):据/S.P.一种N>据S.P.一种Nclass="c1">#从2到sqrt(n)据/S.P.一种N>据S.P.一种Nclass="k">如果据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="o">%据/S.P.一种N>据S.P.一种Nclass="n">一世据/S.P.一种N>据S.P.一种Nclass="o">==据/S.P.一种N>据S.P.一种Nclass="mi">0.据/S.P.一种N>据S.P.一种Nclass="p">:据/S.P.一种N>据S.P.一种Nclass="c1">#n是可被我的据/S.P.一种N>据S.P.一种Nclass="k">返回据/S.P.一种N>据S.P.一种Nclass="kc">错误的据/S.P.一种N>据S.P.一种Nclass="k">返回据/S.P.一种N>据S.P.一种Nclass="kc">真的据/S.P.一种N>据/code>
我们遍历据S.P.一种Nclass="katex"> 一世据/S.P.一种N>据/S.P.一种N>为了据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N> 时间,所以时间复杂性是据S.P.一种Nclass="katex"> O.据/S.P.一种N>据S.P.一种Nclass="mopen">(据/S.P.一种N>据S.P.一种Nclass="mord sqrt">N据/S.P.一种N>据/S.P.一种N> )据/S.P.一种N>据/S.P.一种N>,乘以划分的时间复杂性(关于周围的乘法速度快据S.P.一种Nclass="katex"> O.据/S.P.一种N>据S.P.一种Nclass="mopen">(据/S.P.一种N>据S.P.一种Nclass="mop">LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>,采用牛顿-拉夫森除法)。这将导致较大值的性能较差据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>.据/P.>据/D.一世v>
威尔逊定理据/h2>
但是,这是荒谬的慢;这需要据S.P.一种Nclass="katex"> O.据/S.P.一种N>据S.P.一种Nclass="mopen">(据/S.P.一种N>据S.P.一种Nclass="mord mathdefault">N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>乘法,甚至比上面的试验速度慢。(这与未修改的试验部门相当,检查据S.P.一种Nclass="katex"> N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据/S.P.一种N>代替据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N> 。)据/P.>据/D.一世v>
费玛原始测试据/h2>
这种原始测试使用了这个想法据一种href="//www.parkandroid.com/wiki/fermats-little-theorem/" class="wiki_link" title="费玛的小定理GydF4y2Ba" target="_blank">费玛的小定理据/一种>.据/P.>据!!--E.ND.-mE.ta -->
让据S.P.一种Nclass="katex"> P.据/S.P.一种N>据/S.P.一种N>是质数和据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>是一个整数而不是被划分的据S.P.一种Nclass="katex"> P.据/S.P.一种N>据/S.P.一种N>.然后据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据S.P.一种Nclass="msupsub">P.据/S.P.一种N>据S.P.一种Nclass="mbin mtight">-据/S.P.一种N>据S.P.一种Nclass="mord mtight">1据/S.P.一种N>据/S.P.一种N>-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据/S.P.一种N>总是被划分的据S.P.一种Nclass="katex"> P.据/S.P.一种N>据/S.P.一种N>, 或者据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据S.P.一种Nclass="msupsub">P.据/S.P.一种N>据S.P.一种Nclass="mbin mtight">-据/S.P.一种N>据S.P.一种Nclass="mord mtight">1据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>P.据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>.据S.P.一种Nclass="katex"> □据/S.P.一种N>据/S.P.一种N>
Fermat Pruality Test的想法是使用替加性:如果有一些据S.P.一种Nclass="katex">
一种据/S.P.一种N>据/S.P.一种N>不整除据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>我们有据S.P.一种Nclass="katex">
一种据/S.P.一种N>据S.P.一种Nclass="msupsub">N据/S.P.一种N>据S.P.一种Nclass="mbin mtight">-据/S.P.一种N>据S.P.一种Nclass="mord mtight">1据/S.P.一种N>据/S.P.一种N>据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>, 然后据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>绝对是复合材料。据/P.>据P.>但是,如果据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>是综合,然后是任何据S.P.一种Nclass="katex">
一种据/S.P.一种N>据/S.P.一种N>作品!例如,考虑据S.P.一种Nclass="katex">
N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mord">5.据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">一种据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">4.据/S.P.一种N>据/S.P.一种N>.我们可以计算这一点据S.P.一种Nclass="katex">
4.据/S.P.一种N>据S.P.一种Nclass="msupsub">1据/S.P.一种N>据S.P.一种Nclass="mord mtight">5.据/S.P.一种N>据S.P.一种Nclass="mbin mtight">-据/S.P.一种N>据S.P.一种Nclass="mord mtight">1据/S.P.一种N>据/S.P.一种N>=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">4.据/S.P.一种N>据S.P.一种Nclass="msupsub">1据/S.P.一种N>据S.P.一种Nclass="mord mtight">4.据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>1据/S.P.一种N>据S.P.一种Nclass="mord">5.据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>,所以,如果我们有据S.P.一种Nclass="katex">
N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mord">5.据/S.P.一种N>据/S.P.一种N>但我们挑选据S.P.一种Nclass="katex">
一种据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">4.据/S.P.一种N>据/S.P.一种N>,我们不能得出结论据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>是综合。所以我们需要选择据S.P.一种Nclass="katex">
一种据/S.P.一种N>据/S.P.一种N>让测试通过,标记据S.P.一种Nclass="katex">
N据/S.P.一种N>据/S.P.一种N>作为复合材料。据/P.>据P.>但我们如何选择这样据S.P.一种Nclass="katex">
一种据/S.P.一种N>据/S.P.一种N>还是解决方案很简单:使它成为概率;也就是说,我们挑选据S.P.一种Nclass="katex">
一种据/S.P.一种N>据/S.P.一种N>随机。为了高兴的信心,我们多次重复测试,比如说据S.P.一种Nclass="katex">
K.据/S.P.一种N>据/S.P.一种N>时代。据/P.>据D.一世v class="codex-static-code" data-controller="app/codex/controllers:expandableCode">
1 2 3 4 5 6 7 8据/P.R.E.>据/D.一世v>
进口据/S.P.一种N>据S.P.一种Nclass="nn">随机的据/S.P.一种N>据S.P.一种Nclass="k">def据/S.P.一种N>据S.P.一种Nclass="nf">isprime.据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="p">那据/S.P.一种N>据S.P.一种Nclass="n">K.据/S.P.一种N>据S.P.一种Nclass="p">):据/S.P.一种N>据S.P.一种Nclass="k">为了据/S.P.一种N>据S.P.一种Nclass="n">一世据/S.P.一种N>据S.P.一种Nclass="ow">在据/S.P.一种N>据S.P.一种Nclass="nb">范围据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="n">K.据/S.P.一种N>据S.P.一种Nclass="p">):据/S.P.一种N>据S.P.一种Nclass="n">一种据/S.P.一种N>据S.P.一种Nclass="o">=据/S.P.一种N>据S.P.一种Nclass="n">随机的据/S.P.一种N>据S.P.一种Nclass="o">.据/S.P.一种N>据S.P.一种Nclass="n">randrange据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="mi">2据/S.P.一种N>据S.P.一种Nclass="p">那据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="p">)据/S.P.一种N>据S.P.一种Nclass="c1">#2 <= a <= n-1据/S.P.一种N>据S.P.一种Nclass="k">如果据/S.P.一种N>据S.P.一种Nclass="nb">鲍据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="n">一种据/S.P.一种N>据S.P.一种Nclass="p">那据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="o">-据/S.P.一种N>据S.P.一种Nclass="mi">1据/S.P.一种N>据S.P.一种Nclass="p">那据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="p">)据/S.P.一种N>据S.P.一种Nclass="o">!=据/S.P.一种N>据S.P.一种Nclass="mi">1据/S.P.一种N>据S.P.一种Nclass="p">:据/S.P.一种N>据S.P.一种Nclass="c1">#计算^(n-1)mod n据/S.P.一种N>据S.P.一种Nclass="k">返回据/S.P.一种N>据S.P.一种Nclass="kc">错误的据/S.P.一种N>据S.P.一种Nclass="c1">#绝对是综合据/S.P.一种N>据S.P.一种Nclass="k">别的据/S.P.一种N>据S.P.一种Nclass="p">:据/S.P.一种N>据S.P.一种Nclass="k">返回据/S.P.一种N>据S.P.一种Nclass="kc">真的据/S.P.一种N>据S.P.一种Nclass="c1">#可能是素质据/S.P.一种N>据/code>
如果据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据S.P.一种Nclass="msupsub">N据/S.P.一种N>据S.P.一种Nclass="mbin mtight">-据/S.P.一种N>据S.P.一种Nclass="mord mtight">1据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>但据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>是复合,然后据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>被称为据E.m>Fermat骗子据/E.m>为了据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>, 和据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>被称为据E.m>Fermat Pseudomime.据/E.m>基地据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>.除此以外,据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>被称为据E.m>费马的见证据/E.m>为了据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>.据/P.>据P.>要使事情变得更糟,有多少是Fermat Pseudoprime据E.m>全部据/E.m>基础!那是,据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据S.P.一种Nclass="msupsub">N据/S.P.一种N>据S.P.一种Nclass="mbin mtight">-据/S.P.一种N>据S.P.一种Nclass="mord mtight">1据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>对所有人据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>相对素质据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>,但据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>本身就是综合。这些数字被称为据E.m>据一种href="//www.parkandroid.com/wiki/carmichael-numbers/" class="wiki_link" title="Carmichael号码GydF4y2Ba" target="_blank">Carmichael号码据/一种>据/E.m>,首先是据S.P.一种Nclass="katex"> 5.据/S.P.一种N>据S.P.一种Nclass="mord">6.据/S.P.一种N>据S.P.一种Nclass="mord">1据/S.P.一种N>据/S.P.一种N>.据/P.>据P.>好事是卡米克尔数字非常罕见。坏事是他们中的许多人。这使得这次测试很少使用,因为简单地存储所有Carmichael号码是不可行的(因为它们的绝对是其中很多)。另一件好事是,如果据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>不是Carmichael号码,然后是该范围内的至少一半整数据S.P.一种Nclass="katex"> [据/S.P.一种N>据S.P.一种Nclass="mord">1据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据S.P.一种Nclass="mclose">]据/S.P.一种N>据/S.P.一种N>都是费马证人,所以我们能说出来吗据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>不是Carmichael号码,每次迭代都通过了一半的概率据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>是综合。复合人数的概率被错误地称为素数据S.P.一种Nclass="katex"> K.据/S.P.一种N>据/S.P.一种N>迭代是据S.P.一种Nclass="katex"> 2据/S.P.一种N>据S.P.一种Nclass="msupsub">-据/S.P.一种N>据S.P.一种Nclass="mord mathdefault mtight" style="margin-right:0.03148em;">K.据/S.P.一种N>据/S.P.一种N>.据/P.>据P.>上述算法的运行时间是据S.P.一种Nclass="katex"> O.据/S.P.一种N>据S.P.一种Nclass="mopen">(据/S.P.一种N>据S.P.一种Nclass="mord mathdefault" style="margin-right:0.03148em;">K.据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>为了据S.P.一种Nclass="katex"> K.据/S.P.一种N>据/S.P.一种N>测试,乘以据S.P.一种Nclass="katex"> O.据/S.P.一种N>据S.P.一种Nclass="mopen">(据/S.P.一种N>据S.P.一种Nclass="mop">LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>对于模块化指数,乘以一段时间进行乘法(上学册乘法使用据S.P.一种Nclass="katex"> O.据/S.P.一种N>据S.P.一种Nclass="mopen">(据/S.P.一种N>据S.P.一种Nclass="mop">LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>2据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>时间)。虽然该测试具有缺陷(是概率和Carmichael号码),但它在积极的时间内运行,速度快。据/P.>据/D.一世v>
Miller-Rabin Primality测试据/h2>
Miller-Rabin原始测试在某种意义上是一种更先进的Fermat原始测试。这是算法首先,用说明遵循。据/P.>据D.一世v class="codex-static-code" data-controller="app/codex/controllers:expandableCode">
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 23 24据/P.R.E.>据/D.一世v> |
|
为了理解这个算法,我们需要几个概念。据/P.>据P.>首先,假设据S.P.一种Nclass="katex">
P.据/S.P.一种N>据/S.P.一种N>是质数,考虑模方程据S.P.一种Nclass="katex">
X据/S.P.一种N>据S.P.一种Nclass="msupsub">2据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>P.据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>.这个方程式的解决方案是什么?我们知道据S.P.一种Nclass="katex">
X据/S.P.一种N>据S.P.一种Nclass="msupsub">2据/S.P.一种N>据/S.P.一种N>-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">0.据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>P.据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>, 或者据S.P.一种Nclass="katex">
(据/S.P.一种N>据S.P.一种Nclass="mord mathdefault">X据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据S.P.一种Nclass="mopen">(据/S.P.一种N>据S.P.一种Nclass="mord mathdefault">X据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">+据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">0.据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>P.据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>.自从据S.P.一种Nclass="katex">
P.据/S.P.一种N>据/S.P.一种N>是素质,据S.P.一种Nclass="katex">
P.据/S.P.一种N>据/S.P.一种N>必须分解据S.P.一种Nclass="katex">
X据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据/S.P.一种N>或者据S.P.一种Nclass="katex">
X据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">+据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据/S.P.一种N>;这将导致据S.P.一种Nclass="katex">
X据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">-据/S.P.一种N>据S.P.一种Nclass="mord">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>P.据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>.据/P.>据P.>现在,假设据S.P.一种Nclass="katex">
P.据/S.P.一种N>据/S.P.一种N>是一个奇怪的素数据S.P.一种Nclass="katex">
一种据/S.P.一种N>据/S.P.一种N>是一个相对素质的整数据S.P.一种Nclass="katex">
P.据/S.P.一种N>据/S.P.一种N>.通过费马小定理,我们知道据S.P.一种Nclass="katex">
一种据/S.P.一种N>据S.P.一种Nclass="msupsub">P.据/S.P.一种N>据S.P.一种Nclass="mbin mtight">-据/S.P.一种N>据S.P.一种Nclass="mord mtight">1据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>P.据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>.这个想法是,我们反复划分两者:只要指数甚至,据S.P.一种Nclass="katex">
一种据/S.P.一种N>据S.P.一种Nclass="msupsub">2据/S.P.一种N>据S.P.一种Nclass="mord mathdefault mtight">E.据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>P.据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>对于一些据S.P.一种Nclass="katex">
E.据/S.P.一种N>据/S.P.一种N>,我们可以调用上述结果,给予据S.P.一种Nclass="katex">
一种据/S.P.一种N>据S.P.一种Nclass="msupsub">E.据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">-据/S.P.一种N>据S.P.一种Nclass="mord">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>P.据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>或者据S.P.一种Nclass="katex">
一种据/S.P.一种N>据S.P.一种Nclass="msupsub">E.据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>P.据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>.在后一种情况下,我们可以再次调用结果,直到我们得到第一种情况或指数为奇数。据/P.>据P.>换句话说,我们有以下定理:据/P.>据blockquote class="theorem">
让据S.P.一种Nclass="katex">
P.据/S.P.一种N>据/S.P.一种N>是奇数的质数据S.P.一种Nclass="katex">
P.据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">2据/S.P.一种N>据S.P.一种Nclass="msupsub">S.据/S.P.一种N>据/S.P.一种N>⋅据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">D.据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据/S.P.一种N>在哪里据S.P.一种Nclass="katex">
D.据/S.P.一种N>据/S.P.一种N>是一个奇数整数和据S.P.一种Nclass="katex">
S.据/S.P.一种N>据/S.P.一种N>为正整数。也让据S.P.一种Nclass="katex">
一种据/S.P.一种N>据/S.P.一种N>是一个正整数的质数据S.P.一种Nclass="katex">
P.据/S.P.一种N>据/S.P.一种N>.那么以下至少有一项必须成立:据/P.>据ul>
Miller-Rabin Pruality Test使用本定理的混合性。也就是说,如果有些话据S.P.一种Nclass="katex">
一种据/S.P.一种N>据/S.P.一种N>那么,上述两种说法都不成立据S.P.一种Nclass="katex">
P.据/S.P.一种N>据/S.P.一种N>显然不是素数。这解释了算法的大部分:据/P.>据D.一世v class="codex-static-code" data-controller="app/codex/controllers:expandableCode">
1 2 3 4 5 6 7据/P.R.E.>据/D.一世v>
X据/S.P.一种N>据S.P.一种Nclass="o">=据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="n">一种据/S.P.一种N>据S.P.一种Nclass="o">**据/S.P.一种N>据S.P.一种Nclass="n">D.据/S.P.一种N>据S.P.一种Nclass="p">)据/S.P.一种N>据S.P.一种Nclass="o">%据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="k">如果据/S.P.一种N>据S.P.一种Nclass="n">X据/S.P.一种N>据S.P.一种Nclass="o">==据/S.P.一种N>据S.P.一种Nclass="mi">1据/S.P.一种N>据S.P.一种Nclass="p">:据/S.P.一种N>据S.P.一种Nclass="k">继续据/S.P.一种N>据S.P.一种Nclass="k">为了据/S.P.一种N>据S.P.一种Nclass="n">j据/S.P.一种N>据S.P.一种Nclass="ow">在据/S.P.一种N>据S.P.一种Nclass="nb">范围据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="n">S.据/S.P.一种N>据S.P.一种Nclass="p">):据/S.P.一种N>据S.P.一种Nclass="k">如果据/S.P.一种N>据S.P.一种Nclass="n">X据/S.P.一种N>据S.P.一种Nclass="o">==据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="o">-据/S.P.一种N>据S.P.一种Nclass="mi">1据/S.P.一种N>据S.P.一种Nclass="p">:据/S.P.一种N>据S.P.一种Nclass="k">休息据/S.P.一种N>据S.P.一种Nclass="n">X据/S.P.一种N>据S.P.一种Nclass="o">=据/S.P.一种N>据S.P.一种Nclass="p">(据/S.P.一种N>据S.P.一种Nclass="n">X据/S.P.一种N>据S.P.一种Nclass="o">**据/S.P.一种N>据S.P.一种Nclass="mi">2据/S.P.一种N>据S.P.一种Nclass="p">)据/S.P.一种N>据S.P.一种Nclass="o">%据/S.P.一种N>据S.P.一种Nclass="n">N据/S.P.一种N>据S.P.一种Nclass="k">别的据/S.P.一种N>据S.P.一种Nclass="p">:据/S.P.一种N>据S.P.一种Nclass="k">返回据/S.P.一种N>据S.P.一种Nclass="kc">错误的据/S.P.一种N>据/code>
在这里,我们计算据S.P.一种Nclass="katex"> X据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">一种据/S.P.一种N>据S.P.一种Nclass="msupsub">D.据/S.P.一种N>据/S.P.一种N>m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据/S.P.一种N>.(在算法中,我们将这个整数命名为据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>代替据S.P.一种Nclass="katex"> P.据/S.P.一种N>据/S.P.一种N>因为我们还不知道它是不是质数。)如果据S.P.一种Nclass="katex"> X据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>,那么定理的第二点是正确的。否则,测试if据S.P.一种Nclass="katex"> X据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">-据/S.P.一种N>据S.P.一种Nclass="mord">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>,这意味着第一点是真的,或者我们是正方形据S.P.一种Nclass="katex"> X据/S.P.一种N>据/S.P.一种N>,给据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据S.P.一种Nclass="msupsub">2据/S.P.一种N>据S.P.一种Nclass="msupsub">1据/S.P.一种N>据/S.P.一种N>⋅据/S.P.一种N>据S.P.一种Nclass="mord mathdefault mtight">D.据/S.P.一种N>据/S.P.一种N>.我们再次重复一遍,检查它是否一致据S.P.一种Nclass="katex"> -据/S.P.一种N>据S.P.一种Nclass="mord">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>;如果没有,我们将其平方据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据S.P.一种Nclass="msupsub">2据/S.P.一种N>据S.P.一种Nclass="msupsub">2据/S.P.一种N>据/S.P.一种N>⋅据/S.P.一种N>据S.P.一种Nclass="mord mathdefault mtight">D.据/S.P.一种N>据/S.P.一种N>等等,直到据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据S.P.一种Nclass="msupsub">2据/S.P.一种N>据S.P.一种Nclass="msupsub">S.据/S.P.一种N>据S.P.一种Nclass="mbin mtight">-据/S.P.一种N>据S.P.一种Nclass="mord mtight">1据/S.P.一种N>据/S.P.一种N>⋅据/S.P.一种N>据S.P.一种Nclass="mord mathdefault mtight">D.据/S.P.一种N>据/S.P.一种N>.自从我们知道以来据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据S.P.一种Nclass="msupsub">2据/S.P.一种N>据S.P.一种Nclass="msupsub">S.据/S.P.一种N>据/S.P.一种N>⋅据/S.P.一种N>据S.P.一种Nclass="mord mathdefault mtight">D.据/S.P.一种N>据/S.P.一种N>=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">一种据/S.P.一种N>据S.P.一种Nclass="msupsub">N据/S.P.一种N>据S.P.一种Nclass="mbin mtight">-据/S.P.一种N>据S.P.一种Nclass="mord mtight">1据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">1据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>如果据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>是素数,不需要再检查一次。如果我们遇到过据code>如果x == n-1:休息据/code>行,则第一点为真;否则,这两点都不成立,因此据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>肯定是复合材料。注意我们正在使用据code>否则据/code>在这里构建;如果是据code>为了据/code>退出,因为据code>休息据/code>, 这据code>别的据/code>子句不运行,否则运行。当据code>休息据/code>没有遇到,我们知道这两点都是真的,所以据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>肯定是复合材料,因此我们可以去据code>别的据/code>条款并立即返回据code>错误的据/code>.据/P.>据P.>现在的问题是找出据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>.我们如何选择它?没有良好的方法可以确定,这意味着我们只需选择据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>随机重复几个,据S.P.一种Nclass="katex"> K.据/S.P.一种N>据/S.P.一种N>,乘以,就像费马的质数检验。就像费马的质数检验一样,对于合数有几个条件据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>那据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>未能检测到合成性据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>, 然后据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>被称为据E.m>强大的骗子据/E.m>为了据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>和据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>是一个据E.m>强pseudoprime据/E.m>基地据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>,虽然如果据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>要探测它,它被称为a据E.m>证人据/E.m>为了据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>.据/P.>据P.>对于任何综合据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>,至少据S.P.一种Nclass="katex"> 3.据/S.P.一种N>据S.P.一种Nclass="mord">/据/S.P.一种N>据S.P.一种Nclass="mord">4.据/S.P.一种N>据/S.P.一种N>范围内的整数据S.P.一种Nclass="katex"> [据/S.P.一种N>据S.P.一种Nclass="mord">2据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">2据/S.P.一种N>据S.P.一种Nclass="mclose">]据/S.P.一种N>据/S.P.一种N>有目击者据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>,这比Fermat原始测试更好:它有Carmichael号码,其中没有整数是见证人,甚至是据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>不是Carmichael,只有一半的证人保证。对于Miller-Rabin原始测试,综合的可能性被错误地作为素数传递据S.P.一种Nclass="katex"> K.据/S.P.一种N>据/S.P.一种N>迭代是据S.P.一种Nclass="katex"> 4.据/S.P.一种N>据S.P.一种Nclass="msupsub">-据/S.P.一种N>据S.P.一种Nclass="mord mathdefault mtight" style="margin-right:0.03148em;">K.据/S.P.一种N>据/S.P.一种N>.据/P.>据P.>但是,它仍然是一种缺陷,即原始不保证。如果我们有一个上限据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>,解决方案只是为了修复值据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>.例如,通过简单的测试据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">2据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">3.据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">5.据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">7.据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">1据/S.P.一种N>据S.P.一种Nclass="mord">1据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">1据/S.P.一种N>据S.P.一种Nclass="mord">3.据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">1据/S.P.一种N>据S.P.一种Nclass="mord">7.据/S.P.一种N>据/S.P.一种N>,测试是保证的,只要据S.P.一种Nclass="katex"> N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">据据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">3.据/S.P.一种N>据S.P.一种Nclass="mord">4.据/S.P.一种N>据S.P.一种Nclass="mord">1据/S.P.一种N>据S.P.一种Nclass="mord">5.据/S.P.一种N>据S.P.一种Nclass="mord">5.据/S.P.一种N>据S.P.一种Nclass="mord">0.据/S.P.一种N>据S.P.一种Nclass="mord">0.据/S.P.一种N>据S.P.一种Nclass="mord">7.据/S.P.一种N>据S.P.一种Nclass="mord">1据/S.P.一种N>据S.P.一种Nclass="mord">7.据/S.P.一种N>据S.P.一种Nclass="mord">2据/S.P.一种N>据S.P.一种Nclass="mord">8.据/S.P.一种N>据S.P.一种Nclass="mord">3.据/S.P.一种N>据S.P.一种Nclass="mord">2据/S.P.一种N>据S.P.一种Nclass="mord">1据/S.P.一种N>据/S.P.一种N>,所以如果我们能保证据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>是否小于这个,检查这七个值据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>足够。有据一种target="_blank" rel="nofollow" href="http://primes.utm.edu/prove/prove2_3.html">许多这样的确定性变体据/一种>.据/P.>据P.>该算法的运行时间由两部分组成:准备时间和计算时间据S.P.一种Nclass="katex"> N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">2据/S.P.一种N>据S.P.一种Nclass="msupsub">S.据/S.P.一种N>据/S.P.一种N>⋅据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">D.据/S.P.一种N>据/S.P.一种N>和测试,当我们随机选择据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>.准备工作很简单据S.P.一种Nclass="katex"> O.据/S.P.一种N>据S.P.一种Nclass="mopen">(据/S.P.一种N>据S.P.一种Nclass="mop">LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>.测试是据S.P.一种Nclass="katex"> O.据/S.P.一种N>据S.P.一种Nclass="mopen">(据/S.P.一种N>据S.P.一种Nclass="mord mathdefault" style="margin-right:0.03148em;">K.据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>为了据S.P.一种Nclass="katex"> K.据/S.P.一种N>据/S.P.一种N>试验,乘以据S.P.一种Nclass="katex"> O.据/S.P.一种N>据S.P.一种Nclass="mopen">(据/S.P.一种N>据S.P.一种Nclass="mop">LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>对于模块化指数,乘以乘法时间;这与Fermat Pruality测试完全相同。据/P.>据/D.一世v>
AKS原始测试据/h2>
本节需要更彻底的解释,以及算法的代码。据/P.>据!!--E.ND.-mE.ta -->
到目前为止,所讨论的原始测试要么过度慢(多项式据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>代替据S.P.一种Nclass="katex"> LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据/S.P.一种N>,数字的数量据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>)或仅概率(不保证是正确的)。这使得人们回来徘徊,是否解决了测试的原因,确定测试的原始性,实际上是“快速”的(在数字的多项式时间中);也就是说,它是否处于复杂性等级据S.P.一种Nclass="katex"> P.据/S.P.一种N>据/S.P.一种N>与否。据/P.>据P.>1976年,盖瑞·米勒(上面提到的米勒-拉宾质数检验的发明人,和迈克尔·罗宾)也写了“米勒检验”,米勒-拉宾质数检验的一个确定性变体(实际上是最初的版本)。这个检验在多项式时间内运行,但它的正确性取决于广义黎曼假设到目前为止尚未解决的问题,因此这个检验是不令人满意的。据/P.>据P.>然而,在2002年,印度理工学院的Manindra Agrawal, Neeraj Kayal和Nitin Saxena通过构建这种不依赖于这些未经证实的假设的多项式时间运行的确定性测试,肯定地解决了这个问题。他们的测试被称为AKS测试,题目很简单据一种target="_blank" rel="nofollow" href="http://www.cse.iitk.ac.in/users/manindra/algebra/primality_v6.pdf">primes是p据/一种>.据/P.>据P.>算法的思想依赖于简单的事实据S.P.一种Nclass="katex"> (据/S.P.一种N>据S.P.一种Nclass="mord mathdefault">X据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">一种据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据S.P.一种Nclass="msupsub">N据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">X据/S.P.一种N>据S.P.一种Nclass="msupsub">N据/S.P.一种N>据/S.P.一种N>-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">一种据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>对所有人据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>共同到据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>,如果且只有据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>是质数。请注意,双方是多项式;也就是说,必须比较每个系数。证据简单地由Fermat的小定理完成,如Fermat原始测试,一起据S.P.一种Nclass="katex"> (据/S.P.一种N>据/S.P.一种N>K.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据/S.P.一种N>)据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">0.据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>对所有人据S.P.一种Nclass="katex"> 1据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">≤.据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">K.据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">≤.据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据/S.P.一种N>当且仅当据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>是质数。据/P.>据P.>上面的方法本身就是一个质数检验,但它在位数上花费的时间是指数级的,所以本文使用了一个类似的事实:据S.P.一种Nclass="katex"> (据/S.P.一种N>据S.P.一种Nclass="mord mathdefault">X据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">一种据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据S.P.一种Nclass="msupsub">N据/S.P.一种N>据/S.P.一种N>≡据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">X据/S.P.一种N>据S.P.一种Nclass="msupsub">N据/S.P.一种N>据/S.P.一种N>-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">一种据/S.P.一种N>据S.P.一种Nclass="mspace allowbreak">(据/S.P.一种N>据S.P.一种Nclass="mord">m据/S.P.一种N>据S.P.一种Nclass="mord mathrm">O.据/S.P.一种N>据S.P.一种Nclass="mord mathrm">D.据/S.P.一种N>据/S.P.一种N>(据/S.P.一种N>据S.P.一种Nclass="mord mathdefault">N据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">X据/S.P.一种N>据S.P.一种Nclass="msupsub">R.据/S.P.一种N>据/S.P.一种N>-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>, 意思是据S.P.一种Nclass="katex"> (据/S.P.一种N>据S.P.一种Nclass="mord mathdefault">X据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">一种据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据S.P.一种Nclass="msupsub">N据/S.P.一种N>据/S.P.一种N>-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">(据/S.P.一种N>据S.P.一种Nclass="mord">X据/S.P.一种N>据S.P.一种Nclass="msupsub">N据/S.P.一种N>据/S.P.一种N>-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">一种据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">N据/S.P.一种N>据S.P.一种Nclass="mord mathdefault" style="margin-right:0.10764em;">F据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">+据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">(据/S.P.一种N>据S.P.一种Nclass="mord">X据/S.P.一种N>据S.P.一种Nclass="msupsub">R.据/S.P.一种N>据/S.P.一种N>-据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据S.P.一种Nclass="mord mathdefault" style="margin-right:0.03588em;">G据/S.P.一种N>据/S.P.一种N>对于一些多项式据S.P.一种Nclass="katex"> F据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">G据/S.P.一种N>据/S.P.一种N>.如果据S.P.一种Nclass="katex"> R.据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">=据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">O.据/S.P.一种N>据S.P.一种Nclass="mopen">(据/S.P.一种N>据S.P.一种Nclass="mop">LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>,这一事实可以在多项式时间中进行检查。所有素质仍然满足这一事实,但有些复合材料也通过了不同的值据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据S.P.一种Nclass="mpunct">那据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.16666666666666666em;">R.据/S.P.一种N>据/S.P.一种N>.因此证明了这一点足够小据S.P.一种Nclass="katex"> R.据/S.P.一种N>据/S.P.一种N>和足够小的套装据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据/S.P.一种N>,这样的话据S.P.一种Nclass="katex"> 一种据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">∈据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2777777777777778em;">一种据/S.P.一种N>据/S.P.一种N>那么,这种关系是满足的据S.P.一种Nclass="katex"> N据/S.P.一种N>据/S.P.一种N>不能是合数,证明它是素数。据/P.>据P.>目前,该算法的运行时间是据S.P.一种Nclass="katex"> O.据/S.P.一种N>据/S.P.一种N>〜据/S.P.一种N>据/S.P.一种N>(据/S.P.一种N>据S.P.一种Nclass="mop">LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>6.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>(那是,据S.P.一种Nclass="katex"> O.据/S.P.一种N>据S.P.一种Nclass="mopen">(据/S.P.一种N>据S.P.一种Nclass="mop">LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>6.据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">⋅据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>K.据/S.P.一种N>据/S.P.一种N>LG.ydF4y2BaG据/S.P.一种N>据/S.P.一种N>N据/S.P.一种N>据S.P.一种Nclass="mclose">)据/S.P.一种N>据/S.P.一种N>对于一些据S.P.一种Nclass="katex"> K.据/S.P.一种N>据/S.P.一种N>)。本文最初有据S.P.一种Nclass="katex"> 1据/S.P.一种N>据S.P.一种Nclass="mord">2据/S.P.一种N>据/S.P.一种N>在指数上,但这很快被各种作者的作品减少了。这仍然比Miller-Rabin原始测试速度慢,以及更复杂,这就是为什么米勒-Rabin测试目前以实际数字的方式更广泛地使用(例如,据S.P.一种Nclass="katex"> 3.据/S.P.一种N>据S.P.一种Nclass="mord">4.据/S.P.一种N>据S.P.一种Nclass="mord">1据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">⋅据/S.P.一种N>据S.P.一种Nclass="mspace" style="margin-right:0.2222222222222222em;">1据/S.P.一种N>据S.P.一种Nclass="mord">0.据/S.P.一种N>据S.P.一种Nclass="msupsub">1据/S.P.一种N>据S.P.一种Nclass="mord mtight">2据/S.P.一种N>据/S.P.一种N>范围),但从理论上讲,这个算法是非常有趣的,因为它是第一个证明质数不是一个困难问题的算法。据/P.>据/D.一世v>
额外问题据/h2>
问题加载…据/P.>据P.class="note-text">注意加载......据/P.>据P.class="set-text">设置加载......据/P.>据/D.一世v>