实现此功能的最佳方式是什么:
ArrayList generatePrimes(int n)
Run Code Online (Sandbox Code Playgroud)
此函数生成第一个n素数(编辑:where n>1),因此generatePrimes(5)将返回ArrayListwith {2, 3, 5, 7, 11}.(我在C#中这样做,但我很高兴Java实现 - 或任何其他类似的语言(所以不是Haskell)).
我知道怎么写这个函数,但是当我昨晚做到这一点时,它并没有像我希望的那样结束.这是我想出的:
ArrayList generatePrimes(int toGenerate)
{
ArrayList primes = new ArrayList();
primes.Add(2);
primes.Add(3);
while (primes.Count < toGenerate)
{
int nextPrime = (int)(primes[primes.Count - 1]) + 2;
while (true)
{
bool isPrime = true;
foreach (int n in primes)
{
if (nextPrime % n == 0)
{
isPrime = false;
break;
}
}
if (isPrime)
{
break;
}
else
{
nextPrime …Run Code Online (Sandbox Code Playgroud) 我在网上找到了这个代码.这不是我自己的.这是一个测试给定数字是否为素数的函数.该代码用于确定数字是否为素数.我只是不明白它是如何工作的.
function test_prime(n)
{
if (n===1)
{
return false;
}
else if(n === 2)
{
return true;
}else
{
for(var x = 2; x < n; x++)
{
if(n % x === 0)
{
return false;
}
}
return true;
}
}
alert(test_prime(25));
Run Code Online (Sandbox Code Playgroud)
第一个if和else if语句对我有意义.如果n等于1,则返回false,即1不是素数.否则,如果n等于2,则返回true,因为2是素数.
else语句中的所有内容对我来说都没有意义.如果你调用函数测试25,这不是素数,25%x,x = 2,等于1.那么为什么函数会返回false?
我知道有一些关于for循环我不理解.