当前位置: 首页 > article >正文

【算法】数论基础——唯一分解定理(算术基本定理)python

目录

  • 定义
  • 进入正题
  • 热身训练
  • 实战演练
  • 总结


定义


唯一分解定理:也叫做算数基本定理:
任意一个大于1的整数N,都可以唯一分解为若干个质数的乘积

换句话说,任何大于1的整数n可以表示为:

在这里插入图片描述


例如:
30 = 2^1 * 3^1 * 5^1
100 = 2^2 * 5^2


进入正题


那么怎么去实现呢?很简单

示例实现

def prime_factor(n):
    factor = []
    for i in range(2, n + 1):
        while n % i == 0:
            n //= i
            factor.append(i)
        if n == 1:
            break
    return factor


print(prime_factor(100))
# [2, 2, 5, 5]


热身训练


分解质因数 https://www.lanqiao.cn/problems/1559/learning/?page=1&first_category_id=1&problem_id=1559

在这里插入图片描述


仅仅需要注意一下输出的格式即可


题解code:

def prime_factor(n):
    factor = []
    for i in range(2, n + 1):
        while n % i == 0:
            n //= i
            factor.append(i)
        if n == 1:
            break
    return factor


a, b = map(int, input().split())
for i in range(a, b + 1):
    print(i, end='=')
    print(*prime_factor(i), sep='*')



实战演练


k的倍数 https://www.lanqiao.cn/problems/4278/learning/?page=1&first_category_id=1&tag_relation=intersection&problem_id=4278

在这里插入图片描述
在这里插入图片描述


题解code:

def prime_factor(n):
    factor = []
    for i in range(2, n + 1):
        while n % i == 0:
            n //= i
            factor.append(i)
        if n == 1:
            break
    return factor


t = int(input())
for _ in range(t):
    n, k = map(int, input().split())
    a = list(map(int, input().split()))
    ans = []
    for i in a:
        ans += prime_factor(i)
    res = 1
    for i in range(len(ans)):
        res *= ans[i]
        if res % k == 0:
            print('Yes')
            break
    else:
        print('No')

总结


通过理解和应用唯一分解定理,我们可以更好地分析和解决与整数相关的复杂问题。


如果有更多问题或需要进一步的帮助,可以在评论区留言讨论哦!
如果喜欢的话,请给博主点个关注 谢谢


http://www.kler.cn/a/518790.html

相关文章:

  • 豆包 MarsCode + 开源 = ?AI 助力开源社区新人成长
  • C# OpenCV机器视觉:利用CNN实现快速模板匹配
  • 使用python-docx包进行多文件word文字、字符批量替换
  • 基于迁移学习的ResNet50模型实现石榴病害数据集多分类图片预测
  • openlava/LSF 用户组管理脚本
  • 奖励模型:解析大语言模型的关键工具
  • ES6 类语法:JavaScript 的现代化面向对象编程
  • 前端开发学习路线
  • 【信息系统项目管理师-选择真题】2017下半年综合知识答案和详解
  • 在java java.util.Date 已知逝去时间怎么求年月日
  • Spring AOP通知类型全解析:掌握方法执行前后的艺术
  • Github 2025-01-25Rust开源项目日报Top10
  • JavaScript学习笔记(3)
  • 16.知识图谱中的本体、实体、属性与关系:区别与联系
  • Redis缓存:春招面试的关键知识点
  • Electron版本列表
  • 【自然语言处理(NLP)】循环神经网络RNN
  • 【unity游戏开发之InputSystem——06】PlayerInputManager组件实现本地多屏的游戏(基于unity6开发介绍)
  • 【Flask】在Flask应用中使用Flask-Limiter进行简单CC攻击防御
  • 钉钉群机器人设置——python版本
  • Android AOP:aspectjx
  • 二叉树的最小深度力扣--111
  • 嵌入式MCU面试笔记2
  • HBase的原理
  • c#使用Confluent.Kafka实现生产者发送消息至kafka(远程连接kafka发送消息超时的解决 Local:Message timed out)
  • 9.像素概念