"""实例001:数字组合
题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
程序分析遍:历全部可能,把有重复的剃掉。"""
print("\n***************\n实例001:数字组合\n***************\n")
s = [1,2,3,4]
data = []
for i in s:
for j in s:
for h in s:
if i!=j and j!=h and i!=h:
num = i*100+j*10+h
data.append(num)
print(data)
"""实例003:完全平方数
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析: 因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限。"""
print("\n***************\n实例003:完全平方数\n***************\n")
for i in range(168):
for j in range(i,168):
if j**2-i**2 == 168:
n = i**2 -100
print(f"{n}加100后获得一个完全平方数{i}:{i**2},再加168后,获得另外一个完全平方数{j}:{j**2}")
"""实例004:列表的深浅拷贝"""
print("\n***************\n实例004:列表的深浅拷贝\n***************\n")
import copy
a = [1,2,3,4,['a','b']]
b = a # 赋值
c = a[:] # 浅拷贝
d = copy.copy(a) # 浅拷贝
e = copy.deepcopy(a) # 深拷贝
a.append(5)
a[4].append('c')
print('a=',a,id(a),id(a[1]),id(a[4]))
print('b=',b,id(b),id(b[1]),id(b[4]))
print('c=',c,id(c),id(c[1]),id(c[4]))
print('d=',d,id(d),id(d[1]),id(d[4]))
print('e=',e,id(e),id(e[1]),id(e[4]))
"""实例012:100到200的素数"""
print("\n***************\n实例012:100到200的素数\n***************\n")
import math
d=[]
for i in range(100,200):
for j in range(2,int(math.sqrt(i)+1)):
if i%j==0:
break
else:
d.append(i)
print("100到200之间的素数是:",d)
"""实例014:分解质因数
题目: 将一个整数分解质因数。例如:输入90,打印出90=233*5。"""
print("\n***************\n实例014:分解质因数\n***************\n")
for t in range(2,200):
e = []
flag =0
i = t
while True:
if flag:
break
for j in range(2,i+1):
if i%j == 0:
e.append(str(j))
if i==j:
flag=1
break
i=i//j
break
if len(e)>1:
equal = "*".join(e)
print(f"{t}={equal}")
"""
题目: 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
程序分析: 将每一对因子加进集合,在这个过程中已经自动去重。最后的结果要求不计算其本身。"""
print("\n***************\n实例019:完数\n***************\n")
def list_yinshu(n):
l = []
for i in range(1,n):
if n%i==0:
l.append(str(i))
return l
for i in range(1,1000):
sum = 0
for j in list_yinshu(i):
sum += int(j)
if i==sum:
equal = "+".join(list_yinshu(i))
print(f"找到一个完数{i}={equal}")
# 集合求法更简单
#
def factor(num):
res=set()
for i in range(1,num):
if num%i==0:
res.add(i)
return res
for i in range(2,1001):
if i==sum(factor(i)):
print(i,factor(i))
python | 循环实例