找到一个素数?[英] Find a prime number?

本文是小编为大家收集整理的关于找到一个素数?的处理方法,想解了找到一个素数?的问题怎么解决?找到一个素数?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

要查找n是质量数,我们只需要寻找较小或等于sqrt(n)的所有数字即可.这是为什么?我正在编写C代码,因此试图理解其背后的原因.

推荐答案

n是素数,如果它是一个正整数,由两个正整数(1和N)排除.由于一个数字的除数不能大于该数字,这会产生一个简单的原始测试:

  • 如果整数n(大于1)在范围[2, N-1]中的任何整数都无法排除,则n为prime.否则,n不是主要的.

但是,可以修改此测试以使其更快.因此,让我们调查.

请注意,n的除数成对出现.如果n可以除以数字m,则也可以除以N/m.例如,12个分裂为6,也是2.此外,如果M >= sqrt(N),则N/M <= sqrt(N).

这意味着,如果没有小于或等于sqrt(n)划分n的数字,则没有大于sqrt(n)划分n的数字(除1和n本身除外),否则会出现矛盾.

.

所以我们有更好的测试:

  • 如果整数n(大于1)在范围[2, sqrt(N)]中的任何整数都无法排除,则n为prime.否则,n不是主要的.

如果考虑上述原因,则应该看到通过该测试的数字也通过了第一个测试,并且该测试失败的数字也使第一个测试失败.因此,测试是等效的.

其他推荐答案

一个复合号(一个不是素数,或1个)至少有1对因子,并且可以保证,每对的数字之一小于或等于或等于数字(这是您要问的).

如果将数字的平方根与平方根保持平衡,则获得数字本身(sqrt(n) * sqrt(n) = n),因此,如果将一个数字之一(大于sqrt(n))更大,则必须使另一个数字更小.如果您仅检查数字2至sqrt(n),您将检查所有可能的因素,因为每个因素都将与大于sqrt(n)的数字配对(当然,如果数字实际上是数字除外其他数字的正方形,例如4、9、16等...但这没关系,因为您知道它们不是素数; sqrt(n)本身很容易考虑它们).

其他推荐答案

原因很简单,任何比SQRT大的数字都会导致其他乘法器小于SQRT.在这种情况下,您应该已经检查了.

本文地址:https://www.itbaoku.cn/post/359212.html