蓝桥杯第十一届国赛Python组试题C阶乘约数——唯一分解定理的应用

简介: 定义阶乘 n! = 1 × 2 × 3 × · · · × n。请问 100! (100 的阶乘)有多少个约数。

试题 C: 阶乘约数

问题描述

定义阶乘 n! = 1 × 2 × 3 × · · · × n。

请问 100! (100 的阶乘)有多少个约数。

思路

直接求100的阶乘数值之后再求所有的约数的方式不可取,时间需求太大,这里使用唯一分解定理。

唯一分解定理

2345_image_file_copy_7.jpg


简而言之就:


2345_image_file_copy_8.jpg

用在这里若想求出100!的所有质数所消耗时间也是非常大,这里求出逐个1-100内所有的质数个数,质数个数求和,最后再相乘即可。

题解

def jiechengyueshu2():
  # 哈希表 存放质数
    temp = {}
    # 求出100以内所有质数
    for i in range(2, 101):
        judge = True
        for j in range(2, floor(sqrt(i))+1):
            if i % j == 0:
                judge = False
        if judge:
            temp[i] = 1
    #  求出2-100所有的质数和
    for i in range(2, 101):
        index = i
        for key in temp.keys():
            while index % key == 0:
                index //= key
                temp[key] += 1
    ans = 1
    # print(temp)
    # 按照唯一分解定理规律,将所有质数之和相乘即可,这里没有每一项都+1,因为哈希表中每一项的初始值为1
    for i in temp.values():
        ans *= i
    print(ans)


目录
相关文章
|
4天前
|
Java API 开发工具
如何将python应用编译到android运行
【6月更文挑战第27天】本文介绍在Ubuntu 20上搭建Android开发环境,包括安装JRE/JDK,设置环境变量,添加i386架构,安装依赖和编译工具。并通过`p4a`命令行工具进行apk构建和清理。
21 6
如何将python应用编译到android运行
|
2天前
|
存储 机器学习/深度学习 算法
第十五届蓝桥杯pb组国赛E题[马与象] (15分)BFS算法 详解
第十五届蓝桥杯pb组国赛E题[马与象] (15分)BFS算法 详解
13 3
|
1天前
|
测试技术 Go Python
在python中测试应用
【6月更文挑战第29天】本文介绍Python的unittest是内置的单元测试框架,适合线性控制流的代码测试。并举实例说明,如何组织测试代码,如何构造脚手架和测试套件。
17 6
在python中测试应用
|
4天前
|
开发者 Python
Python进阶:深入剖析闭包与装饰器的应用与技巧
Python进阶:深入剖析闭包与装饰器的应用与技巧
|
2天前
|
存储 算法 测试技术
第十五届蓝桥杯大赛 国赛 pb组F题【括号与字母】(15分) 栈的应用
第十五届蓝桥杯大赛 国赛 pb组F题【括号与字母】(15分) 栈的应用
6 1
|
6天前
|
Java
2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟
2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟
22 4
|
6天前
|
Java
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
16 3
|
6天前
|
Java
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
12 2
|
6天前
|
存储 数据挖掘 BI
Python字典在CSV数据统计中的应用
Python字典在CSV数据统计中的应用
13 1
|
6天前
|
设计模式 算法 Python
Python回调函数中的循环艺术:深入探索for循环的回调应用
Python回调函数中的循环艺术:深入探索for循环的回调应用
7 1