蓝桥杯国14 互质
问题描述
请计算在 [1,2023的2023次幂] 范围内有多少个整数与 2023 互质。由于结果可能很大,你只需要输出对 109+7 取模之后的结果。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
由于 2023
可以分解为质因数 7
和 17
的乘积(2023 = 7 * 17 * 17
),任何包含 7
或 17
作为因子的数都与 2023
不互质。 用总数减去这些非互质的数,剩下的就是互质的数。
119 是 被 7 和 17 同时整除的数,只需要减去一次。
import java.math.BigInteger;public class 国14互质 {public static void main(String[] args) {BigInteger b7 = BigInteger.valueOf(7), b17 = BigInteger.valueOf(17), b119 = BigInteger.valueOf(119);BigInteger target = BigInteger.valueOf(2023).pow(2023);BigInteger cnt7 = target.divide(b7), cnt17 = target.divide(b17), cnt119 = target.divide(b119);BigInteger result = target.subtract(cnt7).subtract(cnt17).add(cnt119); // 119 是 被 7 和 17 同时整除的数,只需要减去一次System.out.println(result.mod(BigInteger.valueOf(1000000007)));}
}
输出:640720414