第十四届蓝桥杯大赛软件赛省赛Python-研究生组-D.互质数的个数

问题描述

给定 a,b,求 1≤x< a b a^b ab 中有多少个 x 与 ab 互质。由于答案可能很大,你只需要输出答案对 998244353 取模的结果。

输入格式
输入一行包含两个整数分别表示 a,b,用一个空格分隔。

输出格式
输出一行包含一个整数表示答案。

样例输入 1
2 5
样例输出 1
16

样例输入 2
12 7
样例输出 2
11943936

评测用例规模与约定

对于 30% 的评测用例,ab≤ 1 0 6 10^6 106

对于 70% 的评测用例,a≤ 1 0 6 10^6 106,b≤ 1 0 9 10^9 109

对于所有评测用例,1 1 0 9 10^9 109,1≤b≤ 1 0 18 10^{18} 1018


题解

暴力求解思路不可取。
面对求互质问题,可采用欧拉函数进行求解。欧拉函数的形式为 φ ( a ) \varphi (a) φ(a),表示小于等于n且与n互质的正整数的个数。
题目中要求区间[1, a b a^b ab)中与 a b a^b ab互质的整数的个数,即求解 φ ( a b ) \varphi (a^b) φ(ab)
因此,当 a b a^b ab=1时,答案为0( φ ( 1 ) \varphi (1) φ(1)=1);其他情况下答案为 φ ( a b ) \varphi (a^b) φ(ab)

对于 φ ( a b ) \varphi (a^b) φ(ab)的求解:
考虑到与质数相关,想到算术基本定理,将 a b a^b ab分解为质数连乘的形式: a b = ( p 1 α 1 p 2 α 2 … p m α m ) b = ∏ i = 1 m p b ⋅ α i {a^b} = {(p_1^{ {\alpha _1}}p_2^{ {\alpha _2}} \ldots p_m^{ {\alpha _m}})^b} = \prod\limits_{i = 1}^m { {p^{b \cdot {\alpha _i}}}} a

你可能感兴趣的:(python,蓝桥杯,算法)