单例模式 摩尔投票法 希腊字母 动态条形图 Android开发 debugging ros 打印 matlab向上取整 hyperlink vue官方下载 网络营销视频 jquery遍历对象 grep不是内部命令 java运行软件 python中for循环的用法 python正则表达 java简介 java基础语言 java的string java定义变量 java语言编程 java定义字符串 linux命令行大全 sql行转列 考试练习系统 网络文件服务器 cf透视辅助 fireworks8 凯恩与林奇2下载 凤凰刷机 瑞兹技能 cad视口旋转 华为动态照片 ip地址切换器 画图3d 向日葵9 x怎么截图 linux解压缩命令 七彩虹网驰版为什么坑 python进制转换
当前位置: 首页 > 学习教程  > python

蓝桥杯:阶乘约数————Python

2021/2/7 10:24:35 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

题目 试题 C: 阶乘约数 本题总分:10 分 【问题描述】 定义阶乘 n! 1 2 3 n。 请问 100! (100 的阶乘)有多少个约数。 【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。 本题的结果为一个整数&#xff0…

题目
试题 C: 阶乘约数
本题总分:10 分

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

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。


解题思路

  • 首先知道一个定理:就是一个数的约数个数就是它的不同质因数的个数 + 1 再连乘的结果数。

Code

#阶乘约数
n = 100
# 因为数不大,就用最普通的方法统计质数了。
p = [2]
for i in range(3, n + 1):
    j = 2
    while j < i:
        if i % j == 0: break
        j += 1
    else: p.append(i)
#print(p) # 2 3 5 7 ... 97(求出所有的质数。)
m = {}
for i in p: m[i] = 1 # 每个质数初始为 1,代表不选这个质数的可能。
for i in range(2, n + 1): # 遍历 [2, 100]
    x = i
    for j in p: # 遍历质数,将每个被乘数都质因数分解一下。
    # (比如 6 分解成 2*3 ,12 分解成 2*2*3)
        if j > x: break
        while x % j == 0:
            x //= j
            # 让对应的质数个数 + 1
            m[j] += 1
s = 1
# 所有质因子的个数相乘,就是约数个数了。
for i in m.values():
    s *= i
print(s)


Answer

  • 39001250856960000

本文链接: http://www.dtmao.cc/news_show_2000226.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?