【发布时间】:2015-02-09 18:19:04
【问题描述】:
我需要输出来读取数字,然后该数字是否为素数。由于某种原因,当它达到 11 时,它不会输出它是素数而只是打印 11 12 这个数不是质数。
我知道我的 while 循环存在逻辑问题,但我无法弄清楚。任何帮助表示赞赏。
int main()
{
bool isPrime = true;
int sqrtNum;
int divisor = 3;
for(int i = 0; i < 100; i++)
{
cout << i << "\t";
if (i == 0 || i == 1)
cout << "That number is not prime." << endl;
else if (i == 2)
cout << "That number is prime." << endl;
else if (i % 2 == 0)
cout << "That number is not prime." << endl;
else
{
sqrtNum = static_cast<int> (sqrt(static_cast<double>(i)));
while (divisor <= sqrtNum)
{
if (i % divisor == 0)
{
cout << "That number is not prime." << endl;
isPrime = false;
break;
}
else
{
divisor = divisor + 2;
}
}
if (isPrime)
{
cout << "That number is prime" << endl;
}
}
}
system("pause");
retu
【问题讨论】:
-
你是在调试器下运行的吗?
-
你忘记在每次循环中重置 isPrime
-
你也忘了在循环中重置
divisor。 -
你练习仔细阅读你的代码。这些都是通过快速检查发现的简单问题。