#include <stdio.h> int main(){ unsigned int i; unsigned int N = 32; for( i=1 ; i<=N ; i++ ){ unsigned int j; double iInv = (double)1 / (double)i; double Sum = 0; for( j=1 ; j<=i ; j++ ){ Sum += iInv; } double Delta = Sum - (double)1; if( Delta ){ printf("%d\t%.100le",i,Delta); } } return(1); }
7 1 Σ --- = 1 j=1 7
というわけで理由を考えてみようと思う。まずは7を2進数であらわす。
7 = 4*1 + 2*1 + 1*1 7(10) = 111(2)
その次に7の逆数を作りたいんだけど。
0.1428571428... ----------------- 7 ) 1.000000000 0.000000000 --- 1.0 0.7 ---- 0.30 0.28 ----- 0.020 14 ------ 60 56 ------- 40 35 -------- 50 49 --------- 10 7 ---------- 30 28 ----------- 20 14 ------------ 60 56