Python算法练习6.16

题目1 计算一个数所有的质因数和其个数

输入:6

输出:[[2, 1], [3, 1]] 

输入:24 

输出:[[2, 3],[3, 1]] 

def separate_primeFactor(n):
    arr = []
    i = 2
    while i * i <= n:
        # 对于正整数n来说,如果它存在[2,n]范围内的质因子,要么这些质因子全部小于等于sqrt(n),要么只存在一个大于sqrt(n)的质因子,其他全部小于等于sqrt(n)
        count = 0
        while n % i == 0:
            n //= i
            count += 1
        if count > 0:
            arr.append([i, count])
        i += 1
    if(n > 1):
        arr.append([n, 1])
    return arr

n = int(input('输入一个数,计算它所有的质因数和个数'))
arr = separate_primeFactor(n)
print(arr)

 题目2 判断给定的几个点能围成几个三角形

# 给定平面上n个点,计算可以组成的三角形的个数
class Point:
    def __init__(self,x,y):
        self.x = x
        self.y = y

def triangle(points):
    n = len(points)
    count = 0
    if n < 3:
        return 0
    for i in range(0, n-2):
        for j in range(i+1, n-1):
            for k in range(j+1, n):
                # 斜率相等判断是否共线 还有S = (1/2) * (x1 * y2 + x2y3 + x3 * y1 - x1 * y3 - x2 * y1 - x3 * y2) 行列式求三角形面积是否为0
                if((points[k].x-points[i].x)*(points[j].y-points[i].y) == (points[k].y-points[i].y)*(points[j].x-points[i].x)):
                    continue
                else:
                    count += 1
    return count

def create_points(num_points):
    points = []
    for i in range(num_points):
        x_y = input(f"输入第{i+1}个点:(例x,y)")
        arr = x_y.split(",")
        point = Point(int(arr[0]), int(arr[1]))
        points.append(point)
    return points

num_points = int(input("请输入点的数量:"))
points = create_points(num_points)
count = triangle(points)
print(f"可以组成{count}个三角形")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值