斐波那契数列:
#include <math.h>
#include <stdio.h>
#include <assert.h>
typedef unsigned long long int uint64;
uint64 fib(int n) {
double r;
const double q5 = sqrt(5.0);
assert(n <= 93); // 93项后超过uint64
r = pow((1 + q5) * 0.5, n) - pow((1 - q5) * 0.5, n);
return (uint64)(r / q5 + 0.5);
}
int main(void) {
int i;
for (i = 1; i <= 93; i++) {
int t;
t = fib(i);
printf("a[%2d] = %llu\n", i, fib(i));
}
return 0;
}
注:给 陈××看的......