public int getPrimesWithin(int min, int max)
{
for (int n = min; n <= max; n++)
{
if (nums [n] == true)
{
return n;
}
}
}
通过代码并返回素数这是正确的,我应该做什么接下来返回两个数字之间的素数
答案 0 :(得分:2)
最简单的算法需要知道所有素数(包括,如果恰好是这种情况)sqrt(max)
。
sqrt(max)
之间的素数列表。n
和min
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);
}
}
这是假设一些事情。
nums
是一个布尔数组,表示索引是否为素数。