factor: improve comments for sieving logic
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		| @@ -73,7 +73,7 @@ static NOINLINE void factorize(wide_t N) | ||||
| 		MULTIPLE_OF_3 = 1 << 2, | ||||
| 		MULTIPLE_OF_5 = 1 << 6, | ||||
| 		MULTIPLE_OF_7 = 1 << 11, | ||||
| 		MULTIPLE_3_5_7 = MULTIPLE_OF_3 | MULTIPLE_OF_5 | MULTIPLE_OF_7, | ||||
| 		MULTIPLE_DETECTED = MULTIPLE_OF_3 | MULTIPLE_OF_5 | MULTIPLE_OF_7, | ||||
| 	}; | ||||
| 	unsigned sieve_word; | ||||
|  | ||||
| @@ -102,9 +102,13 @@ static NOINLINE void factorize(wide_t N) | ||||
| 	// count5 = 6; | ||||
| 	// count7 = 9; | ||||
| 	sieve_word = 0 | ||||
| 		/* initial count for SHIFT_n is (n-1)/2*3: */ | ||||
| 		+ (MULTIPLE_OF_3 - 3 * SHIFT_3) | ||||
| 		+ (MULTIPLE_OF_5 - 6 * SHIFT_5) | ||||
| 		+ (MULTIPLE_OF_7 - 9 * SHIFT_7) | ||||
| 		//+ (MULTIPLE_OF_11 - 15 * SHIFT_11) | ||||
| 		//+ (MULTIPLE_OF_11 - 18 * SHIFT_13) | ||||
| 		//+ (MULTIPLE_OF_11 - 24 * SHIFT_17) | ||||
| 	; | ||||
| 	factor = 3; | ||||
| 	for (;;) { | ||||
| @@ -133,7 +137,7 @@ static NOINLINE void factorize(wide_t N) | ||||
| 		// if (count3 && count5 && count7) | ||||
| 		// 	continue; | ||||
| 		sieve_word += INCREMENT_EACH; | ||||
| 		if (!(sieve_word & MULTIPLE_3_5_7)) | ||||
| 		if (!(sieve_word & MULTIPLE_DETECTED)) | ||||
| 			continue; | ||||
| 		/* | ||||
| 		 * "factor" is multiple of 3 33% of the time (count3 reached 0), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user