【发布时间】:2015-01-27 16:59:40
【问题描述】:
我需要一种方法来检查给定的数字是否为素数。我在互联网上搜索,我发现了不同的功能,但它们很复杂。因此,我设计了自己的方法来检查数字是否为素数。它对我有用。我只是想知道它是否正确。代码如下:
bool IsPrime(int n)
{
for (int i = 2; i <= 7; i++)
{
if (i < n && n % i == 0)
{
return false;
}
if (i == n)
{
return true;
}
}
return true;
}
【问题讨论】:
-
为什么是 7?您不需要测试
i的每个值,直到并包括n的平方根? -
打电话给
IsPrime(121),看看你觉得对不对。 -
如果您想知道它是否正确,请对其进行单元测试或证明。
-
你会想要测试超过 7。这会认为 11 不是素数。
-
您的函数逻辑表明,如果一个数不能被 2 到 7 之间的任何数整除,则该数是素数。这不是素数的定义。正如其他人所说,121 不能被 2、3、4、5、6 或 7 整除,但仍然不是素数。