数论 ?

题目描述:
给定整数a,b,l,求在[1,l]之间能够满足gcd(x,a) = b的x的个数。
考虑到a必然是b的倍数,我们把题目转化为这样的形式:
求在[1,l’]之间与a’互质的数的个数,其中,l’ = l/b,a’ = a/b;
所以怎么做?
考虑到容斥原理,首先对a’进行质因数分解,得到a的所有素因子,考虑a的所有素因子的指数为0或1的所有组合,算出在l’中的不能和它互质的数的数量。减去这些数再加上算重了的数,即可。

你可能感兴趣的:(数论 ?)