算法入门(1)枚举法。

** 以下都是通过枚举法解决问题的。其实枚举法的本质就是把所有问题可能的结果都尝试一边,再通过某种条件将错误的结果筛选出去,留下的便是正确的结果。 **

  1. 输出一个直角三角形,符合 注释中的那个三角形格式。
# 输出一个个三角形
# 输入 5 输出的是一个五行的三角形
# 第一行 1个* 第二行 2个 ... 第五行五个
# 第一步 我们需要一层for循环控制输出 n行 *
# 第二步 我们需要一层for循环控制每一层输出*的个数 1,2,3,4,5
# for i in range(n):
#   for j in range(i+1):
# *
# **
# ***
# ****
# *****
def out_angle1(n):
    for i in range(n):
        for j in range(i+1):
            print("*",end="")
        print()
  1. 以下根据案例1改变的输出三角形,可以根据1尝试写一下。
#     *
#    **
#   ***
#  ****
# *****
def out_angle2(n):
    for i in range(n):
        for j in range(n-i-1):
            print(" ",end="")
        for j in range(n - i,n+1):
            print("*", end="")

        print()
#     *
#    ***
#   *****
#  *******
# *********
def out_angle3(n):
    for i in range(n):
        for j in range(n-i-1):
            print(" ",end="")
        for k in range(2*(i+1)-1):
            print("*",end="")
  1. 斐波那契数列:1,1,2,3,5,8,13,21,34,55,…。斐波那契额数列的规律是 前两个为1,从第三个开始的每一个数为前一个数与前一个数的前一个数字的和。比如:第三个数2为第二个数和第一个数的和。第四个数3为第三个数与第二个数的和。以下为递归和非递归的两种求解方式。
# fbnq 递归
def fib(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fib(n-1)+fib(n-2)
# 非递归
def fib_n(n):
    result = 0
    a = 0
    b = 0
    for i in range(n+1):
        if i<=2:
            result = 1
            a = 1
            b = 1
        else:
            result = a+b
            b,a = result,b
    return result

4.求前100个素数和,素数是只能被1和本身整除的数。1不是素数。


# 判断 100以内素数 并进行求和

def is_prime(n):
    result = 0
    for i in range(2,n):
        is_pr = True
        diversor = int(i/2)+1
        # print(diversor)
        if i>2:
            for j in range(2,diversor):
                if i %j == 0:
                    is_pr = False
                    break
        if is_pr == True:
            result = result +i
            print(i,end= " ")
    return  result

def is_prime_2(n):
    result = 0
    prime_list = []
    for i in range(2,n):
        is_pr = True
        if i %2 == 0 and i!=2:
            is_pr = False
        else:
            for j in prime_list:

                if i %j == 0:
                    is_pr = False
                    break
        if is_pr == True:
            result = result +i
            prime_list .append(i)
            print(i,end= " ")
    return  result

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值