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

あなたの例では、カウンターは初期値から変更されることはありません。数えたいものを数えてみてください。

追加: ...ところで。好む

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

ループ用。「i < n」はより慣用的 (読みやすい) であり、通常、++i は i++ よりも効率的です。

于 2013-10-08T23:20:30.720 に答える
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;
}

これにより、素数が存在するたびに count 変数が増加します。

于 2013-10-09T01:14:53.503 に答える
-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 に答える