我试图计算并返回两个给定数字之间的素数,但无法弄清楚如何

时间:2013-08-29 22:06:37

标签: java

     public int getPrimesWithin(int min, int max)
{
    for (int n = min; n <= max; n++)
    {
        if (nums [n] == true)
        {
            return n;
        }

    }

}

通过代码并返回素数这是正确的,我应该做什么接下来返回两个数字之间的素数

3 个答案:

答案 0 :(得分:2)

最简单的算法需要知道所有素数(包括,如果恰好是这种情况)sqrt(max)

  • 获取/构建2和sqrt(max)之间的素数列表。
  • nmin
  • 之间迭代所有数字max
  • 迭代素数列表,测试它们是否除n
  • 如果其中任何一个确实存在,则n不是素数,内部迭代可以终止。
  • 如果它们都不是除数,那么n就是素数。

答案 1 :(得分:0)

这将永远是真的:

if (nums [n] = true)

我想你想要这个:

if (nums [n] == true)

答案 2 :(得分:0)

此代码:

for(int i = min; i <= max; i++)
{
    int [] temp = new int [i];
}

当它完成时,始终会导致temp成为长度为max的整数数组。另外,正如斧头指出的那样,一旦我们离开循环,由于temp不再在范围内,我们将丢失数组。我建议使用ArrayList,因为那时你可以有一个可变长度数组。

这部分:

if (nums [n] = true)

正如其他人所指出的那样,将nums[n]设为true。您可能想要==

这一行:

temp +=n;

没有多大意义。您正在尝试添加数组和int。

试试这个:

ArrayList<Integer> temp = new ArrayList<Integer>();

for (int n = min; n <= max; n++)
{
    if (nums[n] == true)
    {
        temp.add(n);
    }
}

这是假设一些事情。

  1. nums是一个布尔数组,表示索引是否为素数。
  2. 您想要返回所有素数的列表,而不是所有素数的总和或素数的总和。