Загрузка данных


import math 
import random
secret = int(input("Введите секрет:"))
all = int(input("Количество частей:"))
minimum = int(input("Минимальное число частей для восстоновления:"))

def is_simple(p):
    for i in range(2, int(math.sqrt(p))+2):
        if p % i == 0:    
            return False
    return True

def get_next_simple(secret):
    for p in range(secret + 1, s+ 100000000):
        if is_simple(p):
            return p
    return 0        

def f(x, entropy, secret):
    ret = 0
    xx = 1
    entropyx = [secret] + entropy
    for a in entropyx:
        ret += xx * a
        xx *= x
    return ret

points = int(input("Введите полученный части:"))

#Востоновление

def lag(x, points):
    ret = 0
    n = len(points)
    for i in range(n):
        xi, yi = points[i]
        li = 1
        for j in range(n):
            if i!=j:
                xj,yj = points[j]
                li*=(x-xj)/(xi-xj)
        ret+=li*yi
    return ret    

# разделение секрета

entropy = [0] * (minimum-1)
for i in range(minimum-1):
    entropy[i] = random.randint(0, 100)

shares = [0] * all  # [0,0,0,0,0,0]
for i in range(all):
    xi = i+1
    yi = f(xi, entropy, secret)
    shares[i] = [xi,yi]
print(entropy)
print(shares)


# удаление лишнего секрета
shares.pop(2)
points = shares

# восстановление секрета
revided = round(lag(0, points))

print(points) #Полученные точки
print(revided)
print(f(0, entropy, secret)) #Вывод секреты