一个数字的原始性

时间:2017-02-25 10:44:41

标签: algorithm primes primality-test

众所周知,检查数字是否为' n'是否是素数我们只需要检查它是否有一个小于n的平方根的因子。

我的问题是,检查所有小于n的平方根的素数是否足够。

4 个答案:

答案 0 :(得分:3)

每个 n 大于1的整数都是素数本身或者是素数(Fundamental theorem of arithmetic)的乘积。因此,如果 n 不是素数本身,它必须能被至少两个素数整除。其中至少有一个必须小于或等于 n (否则他们的产品将大于 n ),所以这就足够了检查所有小于或等于 n 的素数。

答案 1 :(得分:0)

我们可以这样说:

让要检查的号码为n。设有一个k <= sqrt(n)的分号n。现在,我们可以按如下方式编写k

k = (p_1^a_1)(p_2^a_2)...(p_x^a_x)

其中p_1, p_2, ..., p_x是素数小于或等于ka_1, a_2, ..., a_x >= 1。现在,由于k除了n,并且因为我们知道p_1, p_2, ..., p_xk,所以我们可以推导出p_1, p_2, ..., p_xn 。因此,为了证明n是非素数,只需检查是否有任何素数<= sqrt(n)除以n

答案 2 :(得分:0)

是的,你所说的绝对正确

您只需检查所有小于等于squareRoot(n)的素数,但重点是您不知道该数字是否为素数。所以,你遍历到squareRoot(n)

答案 3 :(得分:0)

是的,只需要检查因子减去sqrt(n)。但是这个算法有点慢。我有另一个更好的算法叫Miller_Rabin_primality My previous project code Source code

以下是Wiki