我正在尝试显示给定间隔的最后一个素数。例如:
如果 n 是 10 最后一个素数是 7
如果 n 是 11 最后一个质数是 11
如果 n 是 14 最后一个质数是 13
等等...
public static uint LastPrimeNumberInInterval(uint n)
{
uint result = 0;
uint i = 2;
while (i <= n)
{
bool b = false;
while (i <= n / 2)
{
if (n % i == 0)
{
b = true;
break;
}
i++;
}
if (!b)
{
result = i;
}
i++;
}
return result;
}
但是当 n 是素数时我坚持只显示正确答案。有人能指出我的错在哪里吗?
您需要在嵌套循环中使用不同的变量,并为每个检查的数字重置它。
public static uint LastPrimeNumberInInterval(uint n)
{
uint result = 0;
uint i = 2;
while (i <= n)
{
bool b = false;
uint j = 2;
while (j <= n / 2)
{
if (n % j == 0)
{
b = true;
break;
}
j++;
}
if (!b)
{
result = i;
}
i++;
}
return result;
}
我刚刚做了一些事情,它可能会有帮助
public static uint GetLastPrimeNumber(uint n)
{
if (n == 0 || n == 1)
{
return 0;
}
uint j = 2;
while (j < n)
{
if (n % j == 0)
{
n--;
j = 2;
continue;
}
j++;
}
return n;
}