3

数値が素数かどうかを確認するコードは次のとおりです。

bool IsPrime(int num)
{
    if(num<=1)
        return false;
    if(num==2)
        return true;
    if(num%2==0)
        return false;
    int sRoot = sqrt(num*1.0);
    for(int i=3; i<=sRoot; i+=2)
    {
        if(num%i==0)
            return false;

    }
    return true;
}

「num*1.0」という表現はどういう意味ですか?

4

3 に答える 3

6

を乗算すると、 が に1.0強制的にnum変換されdoubleます。明示的なキャストでも同じことができます。

于 2013-09-05T01:00:41.777 に答える
3

num x 1.0 を実行しているため、num が 5 の場合は 5 x 1.0 です。sqrt() メソッドはパラメーターとして double を取り、5.0 を取ります。

于 2013-09-05T01:01:29.657 に答える
3

ではnum*1.0numが最初に昇格されるdoubleため、結果は adoubleになり、次に に渡されdouble sqrt(double)ます。それ以外の場合は、を使用する必要がある場合がありますsqrt(static_cast<double>(num))

通常、 toからの暗黙のキャストがあるため、キャストは必要ありません。こちらを参照してください。intdouble

于 2013-09-05T01:01:33.027 に答える