-5

素数を表示する代わりに、すべての「素数」を数えるにはどうすればよいですか?

例:

cout << "there are 125 prime numbers";

素数がいくつあるかを知りたいので、1000という数字を使用しています。

見つかった素数を表示したくありませんが、見つかった数を知りたいです。

#include <iostream> 
#include <iomanip> 
#include <string>
#include <sstream> 
#include <fstream> 
#include <math.h> 
#include <stdio.h>

using namespace std;

int main()
{
    for (int a=2 ; a < 1000 ; a++)
    {
        bool prime = true;

        for(int c=2 ; c*c <= a ; c++)
        {
            if(a % c == 0)
            {
                prime = false;
                break;
            }
        }

        if(prime) cout << a << " ";
    }

    return 0;
}
4

3 に答える 3

2

コードの再フォーマット:

#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <fstream>
#include <math.h>
#include <stdio.h>

using namespace std;

int main() {
    for (int a = 2; a < 1000; a++) {
        bool prime = true;

        for (int c = 2; c*c <= a; c++) {
             if(a % c == 0) {
                 prime = false;
                 break;
             }
         }

         if(prime) cout << a << " ";
    }

    return 0;
}

ループのたびに出力する代わりに、数値が素数になるたびにカウントする変数を作成する必要があります。外側の for ループの外側に変数を追加することから始めます。

int main() {
    int num_primes = 0;
    for (int a = 2; a < 1000; a++) {

次に、数値が素数であるたびに出力する代わりに、カウンターをインクリメントします。

if(prime) {
    num_primes += 1;
}

最後に、main() から戻る直前に、素数の数を出力します。

cout << num_primes << endl;
return 0;

これは間違いなく宿題のように見えますが、ここから何かを学んでいただければ幸いです。

于 2013-07-23T04:21:12.670 に答える
1

これを試して、

#include < iostream>
#include < iomanip>
#include < string>
#include < sstream>
#include < fstream>
#include < math.h>
#include < stdio.h>

using namespace std;
int main()
{
    int count=0;
    for (int a=2 ; a < 1000 ; a++)
    {
        bool prime = true;
        for (int c=2 ; c*c <= a ; c++)
        {
            if(a % c == 0)
            {
                prime = false;
                break;
            }
         }
        if(prime) count++;
    }

    cout <<"No of prime numbers : "<< count;
    return 0;
}
于 2013-07-23T04:27:13.290 に答える
0

簡単です。値を出力する代わりに、カウンターをインクリメントするだけです。また、方程式 N/(log(N)-1)... を使用して、オイラーの totient 関数のかなりまともな近似を取得することもできます。

于 2013-07-23T04:24:18.827 に答える