from CoTime import*from functools import*from fn import _
print("import over")
import over
"""
题目
"""# 网上抄的print("Copy")
t = CoTime()##print()print(t.cost())#自己写的#优缺点:print("My")
t = CoTime()##print()print(t.cost())
"""
0 ~ 9这10个数字可以组成多少不重复的3位数?
"""# 网上抄的print("Copy")
t = CoTime()#
l =range(10)
count =0for a in l[1:]:for b in l:if a == b:continue#过滤a == bfor c in l:if c != a and c != b:#过滤a == c, b == c
count +=1print(count)#print(t.cost())#自己写的print("My")
t = CoTime()#
a =range(10)
b =range(1,10)
count =0for x in b:for y in a:if x == y:continuefor z in a:if z == x or z == y:continue
count +=1print(count)#print(t.cost())
Copy
648
耗时0.000秒
My
648
耗时0.000秒
"""
1.问题描述:
水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。
例如:1 ^ 3+5 ^ 3+3 ^ 3=153。
求100 ~ 999之间所有的水仙花数。
"""# 网上抄的print("Copy")
t = CoTime()#defisArmstrongNumber(n):
a =[]
t = n
while t >0:
a.append(t %10)
t = t //10
k =len(a)returnsum([x ** k for x in a])== n
for x inrange(100,1000):if isArmstrongNumber(x):print(x,end="\t")#print()print(t.cost())#自己写的#网上抄的通用性更好print("My")
t = CoTime()#
a =range(1,10)
b =range(10)
n =3for x in a:for y in b:for z in b:if x ** n + y ** n + z ** n == x *100+ y *10+ z:print('{}{}{}'.format(x, y, z), end='\t')#print()print(t.cost())
"""
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如,第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
编程求10000以内的完全数。
"""print('copy')
t = CoTime()defisPerfectNumber(n):
a =1
b = n
s =0while a < b:if n % a ==0:
s += a + b
a +=1
b = n / a
if a == b and a * b == n:
s += a
return s - n == n
for k inrange(2,10000):if isPerfectNumber(k):print(k, end='\t')print()print(t.cost())print('my')
t = CoTime()# 网上抄的更节约时间,自己写的更无脑defGetYinzi(n):
a =range(1, n)
re1 =[x for x in a if n % x ==0]return re1
for k inrange(2,10000):if(sum(GetYinzi(k))== k):print(k, end='\t')print()print(t.cost())
"""
220的真因数之和为1+2+4+5+10+11+20+22+44+55+110=284
284的真因数之和为1+2+4+71+142=220
毕达哥拉斯把这样的数对A、B称为相亲数:A的真因数之和为B,而B的真因数之和为A。
求100000以内的相亲数。
"""# 网上抄的print("Copy")
t = CoTime()#defsumOfFactors(k):
p =1
q = k
s =0while p < q:if k % p ==0:
s += p + q
p +=1
q = k // p
if k == p * q and p == q:
s += p
return s - k
for x inrange(2,100000):
y = sumOfFactors(x)if y > x == sumOfFactors(y):print(x, y, end='\t')#print()print(t.cost())#自己写的#优缺点:print("My")
t = CoTime()#
@lru_cache()def