栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录
  • 试题 C: 阶乘约数
    • 问题描述
    • 思路
      • 唯一分解定理
    • 题解

试题 C: 阶乘约数 问题描述

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

思路

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

唯一分解定理

简而言之就:

用在这里若想求出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)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971545.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号