Напишите следующую программу. Для проведения
соревнований по прыжкам с трамплина N спортсменов получают номера,
под которыми они будут выходить на старт и которые генерируются
датчиком случайных чисел. Определить какие номера являются простыми
числами и на каком очередном обращении к датчику случайных чисел
полученный номер будет наибольшим среди этих простых чисел. Вывести
полученные номера N спортсменов, и какой спортсмен имеет в качестве
номера наибольшее простое число. В качестве ответа представьте текст
программы на любом языке программирования. Опишите идею
реализованного вами алгоритма. Перед текстом программы напишите на
каком языке программирования представлена программа ПОЖАЛУЙСТА НУЖНО БЫСТРЕЕ
Ответы на вопрос
import random
n=int(input())
count=0
ans=[]
q=[]
s=[x for x in range(n+500)]
random.shuffle(s)
q=s[:n:]
for i in range(len(q)):
for j in range(2, i-1):
if s[i]%j==0:
break
else: ans.append(s[i])
print(len(ans), max(ans))
генерирую список случайных чисел, каждое число в списке s проверяю на делимость на все числа от 1, до самого этого числа минус единица. Если находится число, которое делит число из списка s без остатка, перехожу к следующему числу, если такого числа не найдётся добавляю в список ans . в конец вывожу максимальное найденное простое из списка ans
примечание: алгоритм не оптимизирован, если спортсменов будет более 10000, считать будет долго)))
from random import shuffle
def isprime(n): #Если проcтое, то вводит это число, иначе вводит 0.
return n*(0 not in map(lambda x: n % x, range(2, n)))
list_nums = list(range(1, 10001))
shuffle(list_nums)
list_nums = list_nums[:int(input('Введите количество спортcменов (не более 10000): '))]
prime_nums = list(set(map(isprime, list_nums)))
prime_nums.remove(0)
print('Набор номеров всех спортcменов:', *list_nums)
if len(prime_nums) != 0:
print('Набор всех простых номеров:', *prime_nums)
print('Наибольший простой номер:', max(prime_nums))
else:
print('В данном списке нет простых номеров.')
P.S Номера генерируются от 1 до 10000, причем у каждого спортсмена будет уникальный номер, номера повторяться НЕ МОГУТ.
