如何计算循环执行次数? C ++

时间:2013-10-08 23:16:56

标签: c++ c++11

如何计算循环执行的次数,我的代码无法正常工作,

在用户输入n号之前找到素数,并显示它们并计算多少

数字总计

离。 数字输入让我们说7,

并且在7之前有3个数字

所以它显示2,3,5,7并且在7之前有3个素数

#include <iostream>
using namespace std;

int main()
{

 int n, i, k;
 int counter = 0;
 bool isprime;


 cout << "Enter a positive integer n: "; 

 cin >> n;

 for(int k = 2; k <= n; k++)
 {
        isprime = true;

        for(int i = 2; i <= k - 1; i++)
            if(k%i == 0)
        {
                isprime = false;
        }

        if(isprime)
        cout << k << "\t";}



cout << "\nThere are " << counter << " primes less than " << n;
  return 0;
}

4 个答案:

答案 0 :(得分:0)

在您的示例中,计数器永远不会从其初始值进行修改。尝试计算你想要的数量。

补充:...... BTW。喜欢

for (i = 0; i < n; ++i)  

用于循环。 “i&lt; n”更惯用(更容易阅读),而且我通常比i ++更有效率。

答案 1 :(得分:0)

#include<iostream>
#include<string>
#include<cmath>

using namespace std;

int main()
{
    int num;
    int count = 0;

    cout << "Enter your range: ";
    cin >> num;

    for(int i = 1; i <= num; i++)
    {
        count = 0;
        for(int j = 2; j <= sqrt(i); j++)
        {
            if(i % j == 0)
            {
                count++;
                break;
            }
        }
        if(count == 0 && i != 1)
            cout << i << "   ";
    }
    cout << endl;
}

每次有素数时,这将增加计数变量。

答案 2 :(得分:-1)

#include <iostream>
using namespace std;

int main()
{

 int n, i, k;
 int counter = 0;
 bool isprime;


 cout << "Enter a positive integer n: "; 

 cin >> n;

 for(int k = 2; k <= n; k++)
 {
        isprime = true;

        for(int i = 2; i <= k - 1; i++)
            if(k%i == 0)
        {
                isprime = false;
        }

        if(isprime)
        {
            cout << k << "\t";
            counter++;
        }
 }



cout << "\nThere are " << counter - 1<< " primes less than " << n;

  return 0;
}

答案 3 :(得分:-1)

如上所述,counter不会增加。

你应该做一个功能

isPrime?(int n)
{ 
    int sqrt_n = sqrt(n)
    for(int i = 2; i <= sqrt_n; i++){ //You could check only to sqrt(n)
    if(n%i == 0)
    {
            return false;
    }
    }
return true;
}

然后你可以使用以下功能:

int main()
{

 int n, i, k;
 int counter = 0;


 cout << "Enter a positive integer n: "; 

 cin >> n;

 for(int k = 2; k <= n; k++)
 {
    if(isPrime?(k)) {
       counter++;
       cout << k << "\t";
    }
cout << "\nThere are " << counter << " primes less than " << n;
  return 0;
}
相关问题