S41906.19-6 破解谜匣

传统题 时间 1000 ms 内存 256 MiB 3 尝试 0 已通过 0

19-6 破解谜匣

破解谜匣

三层加密都过了——光点、余波、间隙、高塔——但Zero的核心还没有打开。最后一道锁,是一个谜匣。

"谜匣?"CC问。

"对。"Echo说,"一个盒子,里面有很多格子。每个格子里有一个数。我们要找出所有满足条件的格子——它们的数的乘积等于一个给定的值。"

"啥条件?"

"给定nnmm。"你说,"求11nn中,所有满足gcd(i,n)=m\gcd(i,n)=mii的个数。"

"gcd是啥?"

"最大公约数。"你说,"两个数共同拥有的最大约数。"

"这咋算?"

"先除。"你说,"如果gcd(i,n)=m\gcd(i,n)=m,那么mm必须整除nn。设n=n/mn'=n/mi=i/mi'=i/m,则gcd(i,n)=1\gcd(i',n')=1。"

"然后呢?"

"然后问题变成:求11nn'中与nn'互质的数的个数——这就是欧拉函数φ(n)\varphi(n')。"

"欧拉函数?"

"对。"你说,"φ(n)\varphi(n)表示11nn中与nn互质的数的个数。"

"咋算?"

"先质因数分解。"你说,"φ(n)=n×pn(11/p)\varphi(n)=n\times\prod_{p|n}(1-1/p)。"

你开始算。nn的质因数分解,然后套公式。

"第47个谜匣。"你说,"n=47n=47m=1m=1——答案是46。"

"46?"

"对。"你说,"47是质数,所以除了47自己,其他46个数都和47互质。"

"简单。"

"对。"你说,"有时候,简单就是答案。"

CC把46刻在手臂最后一个空位上——45360,12,19,46。

"满了。"她说。

"满了。"你说。

"那我开始背。"CC说,"45360,12,19,46。"

"背这个干啥?"

"密码。"她说,"开门的密码。"

Echo看着CC背数字的样子——像念经,像祈祷,像某种古老的仪式。

"以前Echo-0也背过。"她说。

"背啥?"

"47。"她说,"只有47。"

"现在多了。"你说。

"对。"Echo说,"现在多了。"


题目描述

给定nnmm,求11nn中满足gcd(i,n)=m\gcd(i,n)=m的正整数ii的个数。

输入格式

两个整数nnmm

输出格式

满足条件的整数个数。


输入样例

5

输出样例

0

提示

  • gcd(i,n)=m\gcd(i,n)=m,则mnm|n。设n=n/mn'=n/mi=i/mi'=i/m,则gcd(i,n)=1\gcd(i',n')=1
  • 答案为欧拉函数φ(n)\varphi(n')
  • n107n'\le 10^7,线性筛预处理欧拉函数。

在线编程 IDE

建议全屏模式获得最佳体验