Напишите следующую программу. Для проведения
соревнований по прыжкам с трамплина 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, причем у каждого спортсмена будет уникальный номер, номера повторяться НЕ МОГУТ.