我需要输出来读取数字,然后判断数字是不是质数。由于某种原因,当它达到11时,它不会输出它是质数,而只是输出11,12,这个数字不是质数。
任何帮助都是非常感谢的。
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发布于 2015-02-10 02:29:21
从注释中可以清楚地看出,您忘记了在循环中重置isPrime和divisor的值。为了避免这样的错误,最好只在使用这些变量的范围内定义这些变量。
int main()
{
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
{
bool isPrime = true;
int divisor = 3;
int sqrtNum = static_cast<int> (sqrt(static_cast<double>(i)));https://stackoverflow.com/questions/28416594
复制相似问题