"""实例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 | 循环实例