public int getPrimesWithin(int min, int max)
{
for (int n = min; n <= max; n++)
{
if (nums [n] == true)
{
return n;
}
}
}
遍历代码并返回素数是正确的,接下来我应该做什么来返回两个数字之间的素数
public int getPrimesWithin(int min, int max)
{
for (int n = min; n <= max; n++)
{
if (nums [n] == true)
{
return n;
}
}
}
遍历代码并返回素数是正确的,接下来我应该做什么来返回两个数字之间的素数
最简单的算法需要知道所有素数(如果恰好是这种情况,包括在内)sqrt(max)
。
sqrt(max)
。n
之间的所有数字min
max
n
。n
不是素数,并且可以终止内部迭代。n
则为素数。这将永远是真的:
if (nums [n] = true)
我想你想要这个:
if (nums [n] == true)
这段代码:
for(int i = min; i <= max; i++)
{
int [] temp = new int [i];
}
到它完成时,总是会产生temp
一个长度为 int 的数组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);
}
}
不过,这是假设一些事情。
nums
是一个布尔数组,表示索引是否为素数。