难度系数:⭐⭐
考察题型:数论
涉及知识点:约数定理
思路分析:
一开始我是想着直接分解因数,结果100!的时间复杂度实在太大。
所以这道题只能靠巧取解决。搬出适合本题的工具↓
质数-唯一分解公式:
质数有2、3、5、7、11、13······
比如18=2*3*3(p1=2,a1=1;p2=3,a2=2)
约数个数=(a1+1)(a2+1)=(1+1)(2+1)=6 (分别是:1,2,3,6,9,18)
#1.创建1~100的质数集
def prime(x):
for i in range(2,int(x**0.5)+1):
if x%i==0:
return False
return True
zhishu=[i for i in range(2,101) if prime(i)==True]
#zhishu=[2,3,5,7,11···,97]
#2.计算约数个数
a=[0]*100 #创建计数数组
for i in range(1,101): #遍历1~100
x=i #当前变量赋值
for j in zhishu: #遍历质数数组
while x%j==0: #判断约数
a[j]+=1 #对应计数+1
x//=j #循环条件
#a=[0, 0, 97···0,0]
a=[i for i in a if a!=0]
#[97, 48, 24, 16···]
#3.遍历结果
ans=1
for i in a:
ans*=i+1 #唯一分解定理公式
print(ans) #39001250856960000
我写的是关于蓝桥杯的系列题解,感谢关注我的朋友们,我会持续输出高质量文章
蓝桥杯python组十一届决赛真题+解析+代码(通俗易懂版)_编程有了思路-CSDN博客小蓝特别喜欢2,今年是公元2020年,他特别高兴。他很好奇,在公元1年到公元2020年(包含)中,有多少个年份的数位中包含数字2?一个数如果除了1和自己还有其他约数,则称为一个合数。例如:1,2,3不是合数,4,6是合数。定义阶乘n!=1×2×3x...xn。请问100!(100的阶乘)有多少个正约数。小蓝特别喜欢单调递增的事物。https://blog.csdn.net/m0_55148406/article/details/122863206?spm=1001.2014.3001.5502