我正在用 ANSI-C 编写程序。
给定这些值:
static long long int QList[12] = { 0, 2, 6, 30, 210, 2310, 30030, 510510, 9699690, 223092870, 6469693230, 200560490130 };
static long long int phiList[12] = { 0, 1, 2, 8, 48, 480, 5760, 92160, 1658880, 36495360, 1021870080, 30656102400 };
static int hList[12] = { 0, 1, 2, 4, 12, 60, 60, 120, 360, 3960, 27720, 27720 };
我在这样的循环中使用它们:
double alfa;
static double Log2 = log(2.);
for(k=3; k<8; k++){
alfa = QList[k]/phiList[k]/ hList[k]/ Log2;
[.........]
}
如果这样写,则每个“k”的 alfa = 0.0000000000000000000。
相反,如果我写:
double alfa;
static double Log2 = log(2.);
for(k=3; k<8; k++){
alfa = QList[k];
alfa= alfa/ phiList[k];
alfa = alfa / hList[k];
alfa = alfa / Log2;
[.........]
}
Alfa 假定正确的值(不同于零)。问题似乎是“hList [k]”的划分。
为什么?