Как посчитать, сколько раз был выполнен цикл? C ++

0

Как подсчитать, сколько раз цикл был выполнен, мой код не работает, как я ожидал,

найдите числа простых чисел до ввода n номера пользователем и покажите их и подсчитайте, сколько

числа в целом

ех. числовой ввод позволяет говорить 7,

и есть 3 числа до 7

поэтому он отображает 2,3,5,7 и есть 3 простых числа до 7

#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;
}
Теги:
c++11

4 ответа

0
Лучший ответ
#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;
}
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;
}

Это увеличит значение счетчика каждый раз, когда будет простое число.

0

В вашем примере счетчик никогда не изменяется от его начального значения. Попробуйте подсчитать, что вы хотите подсчитать.

Добавлено:... BTW. предпочитать

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

для зацикливания. "I <n" более идиоматично (легче читать), а ++i обычно будет более эффективным, чем i++.

-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;
}
  • 0
    Вы можете кэшировать результат sqrt (n), чтобы избежать вычисления каждый раз.
  • 0
    Вы правы, я изменил это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню