Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random # импорт модуля random, нужен для генерации (псевдо)случайного числа
- import time # импорт модуля time, нужен для замеров времени выполнения
- # функция получает число, и если оно не чётное - делит на диапазон нечётных чисел
- def isprime(n): # (шаг 2, они пропускаются) от 3 до int(sqrt(n))
- if n%2==0: return(False) # если деление на любое число из этого диапазона дало 0 в остатке (разделилось нацело)
- for i in range(3,int(n**0.5),2): # - число простое, функция возвращает False, если делителя не найдено и цикл завершён
- if n%i==0: return(False) # выполняется возврат True - число простое
- return(True) # <--вот тут оно возвращает True
- # получение количества десятичных знаков для генерации случайного числа
- a = int(input('введите натуральные число десятичных знаков: '))
- tm = time.time() # сохранение времени начала поиска времени поиска
- while True:
- stm = time.time() # cохранение времени начала проверки числа
- num = random.randint(10**(a-1),10**a) # получение рандомного числа заданной длинны
- if isprime(num): # если тест пройден - вывести таймеры (\n - перенос строки, sep='' - разделитель)
- print(time.time()-tm,' секунд на проверку всех случайных чисел \n',time.time()-stm,' секунд на проверку полученного простого числа', sep='')
- print(num,' - случайное простое число') # вывод полученного простого числа
- break # Выход из цикла, если простое число найдено
- input() # ожидание ввода, чтобы при запуске в консоли программа не закрылась сразу после выполнения
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement