adapt to update sieves for additive functions

This commit is contained in:
filifa
2025-10-07 18:10:44 -04:00
parent df317e0837
commit c842762ca9
4 changed files with 9 additions and 20 deletions

View File

@@ -16,12 +16,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package sieve
func updateMultiples(sieve []uint, p uint, n uint) {
func updateMultiples(sieve []uint, p uint, n uint, additive bool) {
for q := p; ; q *= p {
// sieve[a*b] = sieve[a] * sieve[b] if gcd(a,b) = 1
for i := 2 * q; i < n; i += q {
if i%(p*q) != 0 {
sieve[i] *= sieve[q]
if additive {
sieve[i] += sieve[q]
} else {
sieve[i] *= sieve[q]
}
}
}