算术异常

时间:2017-03-09 19:04:07

标签: c++ exception casting

我正在尝试计算Euler的totient函数。它适用于小于10^5的数字,但它会为大数字引发算术异常。

__int128_t fi(__int128_t n) {
    double result = n;
    for(int i = 0; pr[i] <= n; i++)
        if (n % pr[i] == 0) result *= (1  - (double)1/pr[i]);
    return result;
}

我尝试过做明确的演员表,但是没有成功。

pr包含最高10^6的素数除数。

0 个答案:

没有答案