|
ある素数を計算するためのプログラムについて分析しています。
そのソースの中でで分からないことがいくつかあるので、
ここで取り上げようと思います。お願いします。
TheNumberOfKisu = (n-1) / 2;
こうするとなぜ3からnの間にある奇数の数が求まるのでしょうか?
実際実数を入れて試して考えたのですが、やっぱり分かりませんでした。
char *array;
int i, j;
for ( i = 3; i < n/3; i += 2 ) {
if ( array[i/2-1] ) {
for ( j = i*2; j <= n; j += i )
if ( j&1 )
array[j/2-1] = 0;
}
}
この部分でi の倍数(i 自身は除く)を弾いていく(状態を0にする)作業をしているのだそうですが、特にif ( j&1 )のところがよく分かりません。
お願いします。
|