Мне нужно проверить, является ли n = 17 простым числом: (n-1)! мод n = n-1. Для этого сначала мне нужно вычислить факториал от 16 до 4 потоков, это означает, что интервал 1..16 должен быть разделен на 4 подинтервала: 1..4, 5..8, 9..12, 14 ..16. Мне удалось проверить, является ли 17 простым числом через 16 потоков, по одному на каждую операцию, но я не знаю, как я могу разделить его так, чтобы операции выполнялись только в 4 потоках.
Я был бы очень признателен за идеи, спасибо!
Вот мой код:
import threading
n = 17
t = n-1
ts = []
num = (n-1)/t
def calcFak():
for i in range(t):
c = i*(n-1)/t+1
thread = threading.Thread(target=threads, args = (c,))
ts.append(thread)
thread.start()
thread.join()
def threads(var):
print(f"start thread {var}")
global num
num = num * var
print(f"end thread {var}")
def managerThread(thread):
calcFak()
print(num)
if num % n == t:
print(n, ' is Prime')
else:
print(n, ' is not Prime')
t2 = threading.Thread(target = managerThread, args=(ts,))
t2.start()