【发布时间】:2014-07-01 21:47:31
【问题描述】:
我试图在用户输入的数字之后找到下一个质数。
这是我目前的代码:
public int Calculation(int number)
{
//set the isPrime to false
bool isPrime = false;
//do this while isPrime is still false
do
{
//increment the number by 1 each time
number = number + 1;
int squaredNumber = (int)Math.Sqrt(number);
//start at 2 and increment by 1 until it gets to the squared number
for (int i = 2; i <= squaredNumber; i++)
{
//how do I check all i's?
if (number % i != 0)
{
isPrime = true;
}
}
} while (isPrime == false);
//return the prime number
return number;
}
我知道有些东西丢失了,因为我第一次给出一个非 0 的余数,然后它返回那个数作为素数。问题是我无法弄清楚逻辑/语法来查看该循环中的每个 i 是否不是 0 作为余数。
【问题讨论】:
-
我认为你检查素数是错误的,如果
number % i == 0那么i是一个除数所以这个数字不是素数。 -
什么是“下一个素数”?你的意思是,最小的质数大于用户输入的数字?
-
是的。因此,如果他们输入 5,则返回 7。例如,如果他们输入 7,则返回 11。