Скачиваний:
13
Добавлен:
09.04.2023
Размер:
1 Кб
Скачать
import random
import math

def miller (m):
    r = int(math.log2(m))
    print('Используем ',r,' свидетелей простоты так так целесообразно использовать log2([число])')
    s = 0
    pr = 0
    t = m -1
    while (t % 2 == 0):
        s += 1
        t = t // 2
    print('Представляем в виде 2^',s,' * ', t)
    for i in range (r):
        a = random.randint(2,m-2)
        print('Текущий свидетель: ', a)
        x = (a**t) % m
        if (x == 1) or ( x == m - 1):
            print( 'x = ',x, 'Переход к с ледующему свидетелю')
            continue
        for j in range (s-1):
            print('Текущая степень:',s - j)
            x = x**2 % m
            print('x = ',x)
            pr = 0
            if (x == 1):
                return False
            elif (x == m - 1):
                pr = 1
                break
        if (pr == 1):
            continue
        return False
    return True


z = int(input('Введите число: '))
l = miller(z)
if (l == False):
        print('Число составное!')
else:
    print('Число вероятно простое!')

Соседние файлы в предмете Математические основы защиты информации