Python

Программирование на языке Python

Напишите программу, которая в последовательности натуральных чисел определяет количество простых чисел. Программа получает на вход количество чисел (не более 100) в последовательности, а затем сами числа. Программа должна вывести два числа  — количество простых чисел - первое, и их среднее арифметичкое - второе.
Если тут может быть 100 чисел, то есть смысл потратиться на заполнение решета Эратосфена до максимального числа последовательности:
 from math import isqrt

def toindex(i: int): return i // 2 - 2

def eratosthenes(end):
prime = [True] * toindex(end)
for j in range(9, end, 6): prime[toindex(j)] = False
for i in range(5, isqrt(end) + 1, 2):
if not prime[toindex(i)]: continue
for j in range(i * i, end, i * 2): prime[toindex(j)] = False
return prime

N = int(input())
if N 100: raise ValueError("Неверное количество чисел")
numbers = list(map(int, map(input, ('',) * N)))

ISPRIME = eratosthenes(max(numbers) + 1)

def isprime(n): return (n & -2) == 2 or (n > 3 and n % 2 == 1 and ISPRIME[toindex(n)])
primes = list(filter(isprime, numbers))
print(len(primes), sum(primes) / len(primes), sep = '\n')
Евгений Цай
Евгений Цай
87 571
Лучший ответ
Конечно, вот готовый код:
 def is_prime(n): 
"""
Функция проверяет, является ли число простым.
"""
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True

n = int(input("Введите количество чисел: "))
numbers = [int(input(f"Введите число {i + 1}: ")) for i in range(n)]

prime_count = 0
prime_sum = 0

for number in numbers:
if is_prime(number):
prime_count += 1
prime_sum += number

if prime_count > 0:
prime_average = prime_sum / prime_count
else:
prime_average = 0

print(f"Количество простых чисел: {prime_count}")
print(f"Среднее арифметическое простых чисел: {prime_average}")
Программа запрашивает у пользователя количество чисел в последовательности и сами числа. Затем она проходит по всем числам и считает количество простых чисел и их сумму. После этого программа выводит количество простых чисел и среднее арифметическое простых чисел.
Алекс Алекс
Алекс Алекс
14 273
 def is_prime(num): 
if num < 2: return False
for i in range(2, int(num**0.5)+1):
if num % i == 0: return False
return True

n, count, sum_primes = int(input("Введите количество чисел в последовательности: ")), 0, 0

for i in range(n):
num = int(input("Введите число: "))
if is_prime(num): count, sum_primes = count+1, sum_primes+num

print("Количество простых чисел:", count)
if count > 0: print("Среднее арифметическое простых чисел:", sum_primes / count)
Andrey Filipenko
Andrey Filipenko
4 629
def is_prime(n):
"""
Функция для определения является ли число простым
"""
if n == 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True

n = int(input("Введите количество чисел: "))
sequence = []
for i in range(n):
sequence.append(int(input("Введите число: ")))

count = 0
total = 0
for num in sequence:
if is_prime(num):
count += 1
total += num

if count == 0:
print("Простых чисел нет")
else:
print("Количество простых чисел:", count)
print("Среднее арифметическое простых чисел:", total / count)