题目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}个三角形")