蓝桥杯 互质数的个数

题目

链接

思路

知道欧拉函数的性质就会做了

在这里插入图片描述

代码

# 欧拉函数
def euler(n):
    res = n
    # 找所有的质数因子
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            # 去除因子的k次方
            while n % i == 0:
                n //= i
            res = res // i * (i - 1)  # 先除再乘,结果肯定变小,肯定不会大过mod
    # 没有质数因子,即n本身就是质数(易忘点)
    if n > 1:
        res = res // n * (n - 1)
    return res


# 快速幂
def ksm(a, b):
    x = 1
    while b:
        if b % 2:
            x = x * a % mod
        a = a * a % mod
        b //= 2
    return x


mod = 998244353
a, b = map(int, input().split())

print(ksm(a, b - 1) * euler(a) % mod)

评价

偏数学的题目,知道就是会,不知道就是不会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值