我的循环查找素数的问题
Issue with my loop finding primes
我需要输出来读取数字,然后判断数字是否为素数。出于某种原因,当它达到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
的值。为了避免这样的错误,最好只在使用这些变量的范围内定义它们。
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)));
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 在java中解决这段代码时面临循环中的问题
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 在 for 循环中查找问题时遇到困难
- 嵌套for循环C++的问题(初学者)
- 退出简单while循环时出现问题
- 循环无限运行C++解决骑士之旅问题
- Visual Studio 2017循环自动向量化问题
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 嵌套While循环不起作用(C++问题)
- 使用 GMP 的 while 循环出现问题
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- OpenMP for 循环并行性问题
- 这个返回元素位置的基于循环的函数有什么问题?
- 为什么循环会导致指针出现问题?
- 使用基于范围的循环迭代矢量时出现问题
- 在 c++ 中循环遍历数组时遇到问题
- 运行无限循环的最小二叉树问题
- 在C++中循环访问自定义结构列表的小问题
- 在 for 循环中更新两个变量时遇到问题C++