0

誰かがこれについて簡単に助けてくれるかどうか疑問に思っていました. チリアド プログラムを終了しました。素数と素数の平均数を計算します。しかし、私の答えと先生の答えを見ると、どちらの方向にも 0.5 ほどずれているように見えます。

彼女が持っている:

最初の 50 個のチリアドの総素数: 5133 チリアドあたりの平均数: 102.66

私は持っている:

最初の 50 チリアドの総素数: 5134 チリアドあたりの平均数: 102

私の答えが正しく丸められていないためだと確信していますが、 showpoint setprecison を試してみましたが、うまくいきませんでした:(

#include <iostream>
#include <cmath>
#include <iomanip>

const int CHILIADS = 50;

bool isPrime (long n);
long primeCount (long x, long y);

using namespace std;
int main()
{

    cout << setw(10) << left << "Start" << setw(10) << "End" << setw(24) << "Number of Primes" << endl;

    primeCount (0, 50000);

    return 0;
}

// Determines whether the number is prime
bool isPrime (long n)
{
    int a;

    if (n == 1)
    {
        return false;
    }

    for (a = 2; a <= (n / 2); a++)
    {
        if ((n % a) == 0)
        {
            return false;
        }

    }
    return true;
}

// Counts and organizes the prime numbers using the isPrime function
long primeCount (long x, long y)
{
    bool prime;
    int b;
    int c = 1000;
    int counter = 0;
    int totalSum = 0;

    for (b = x; b <= y; b++)
    {
        prime = isPrime (b);

        if (prime == true)
        {
            counter++;
        }
        if (b == c)
        {
            cout << setw(10) << left << (b - 999) << setw(10) << left << b << setw(12) << counter << endl;
            cout << fixed << showpoint << setprecision(2) << endl;  
            totalSum = totalSum + counter;
            counter = 0;
            c = c + 1000;
        }
    }

    cout << endl << "Total primes in the first 50 chiliads: " << totalSum << endl;
    cout << "Average number per chiliad: " << totalSum / CHILIADS << endl;

}
4

1 に答える 1

1
primeCount (0, 50000);

long primeCount (long x, long y)
{
...
    for (b = x; b <= y; b++)

基本的に、0 を素数として数えます。

于 2013-02-25T05:37:45.707 に答える