python | 循环实例

python | 循环实例
"""实例001:数字组合
题目:有四个数字:1234,能组成多少个互不相同且无重复数字的三位数?各是多少?

程序分析遍:历全部可能,把有重复的剃掉。"""
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))

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注