0

如何计算循环执行了多少次我的代码没有像我预期的那样工作,

查找用户输入的 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

4 回答 4

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;
}

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

于 2013-10-09T01:14:53.503 回答
0

在您的示例中, counter 永远不会从其初始值修改。试着让它计算你想计算的东西。

补充说:...顺便说一句。更喜欢

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

用于循环。"i < n" 更惯用(更容易阅读),并且 ++i 通常比 i++ 更有效。

于 2013-10-08T23:20:30.720 回答
-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;
}
于 2013-10-08T23:27:33.693 回答
-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;
}
于 2013-10-08T23:29:48.883 回答