Tomcat 以太坊 join path jaxb vue插件 vue版本 vue入门 外卖系统源码 short几个字节 eclipse显示左边目录 dwf文件怎么转成dwg python打开文件 python包 python的安装路径 安装java环境 java中的string java入门学习 java判断文件是否存在 java重命名 python视频教程 黑客攻防实战入门 金山wps2003 html特殊字符 迅雷免费会员号共享 comsol软件下载 dep 超级力量2修改 福昕阅读器绿色版 medcalc 淘宝图片下载 udp测试工具 pr动态字幕 sdm439 kz文件 alert换行 5s降级 ps怎么修证件照 小米开发者选项 水之td合成
当前位置: 首页 > 学习教程  > python

day25(4) 阶乘约数

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

【问题描述】 定义阶乘 n! 1 2 3 n。 请问 100! (100 的阶乘)有多少个约数。【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。 本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的…

【问题描述】

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

【答案提交】

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

解题(答案:39001250856960000)

数学基础

任意一个正整数 X 都可以表示成若干个质数乘积的形式,即
X = p1a1 * p2a2 * p3a3…… * pkak
约数个数 = (a1 + 1)(a2 + 1)……(ak + 1)

步骤1:找出100以内的所有质数

prime_lst = [2]

def isPrime(n):
    max = int(n**0.5)+1
    for i in range(2,max):
        if n % i == 0:
            return False
    else:
        return True
        
for i in range(3, 100):
    if isPrime(i):
        prime_lst.append(i)

步骤二:对质数进行计数

lst = [1]*100
for i in range(1, 101):
    while True:
        for j in prime_lst:
            if i % j == 0:
                lst[j-1] += 1
                i /= j
        if i == 1:
            break

步骤3:统计约数

import functools

def multiply(x, y):
    return x*y

print(functools.reduce(multiply, lst))

完整代码

import functools

lst = [1]*100
prime_lst = [2]


def multiply(x, y):
    return x*y


def isPrime(n):
    max = int(n**0.5)+1
    for i in range(2,max):
        if n % i == 0:
            return False
    else:
        return True

for i in range(3, 100):
    if isPrime(i):
        prime_lst.append(i)

for i in range(1, 101):
    while True:
        for j in prime_lst:
            if i % j == 0:
                lst[j-1] += 1
                i /= j
        if i == 1:
            break

print(functools.reduce(multiply, lst))

在这里插入图片描述


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

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?