На вход программы поступает последовательность из натуральных чисел, все числа в последовательности различны. Рассматриваются всевозможные непустые подмножества, состоящие из элементов последовательности. Необходимо найти количество подмножеств, в которых есть хотя бы одно простое число. Простым числом является то, которое делится только на себя и на 1. Также 1 не является простым числом.
Пример входных данных:
Первая строка входного файла содержит число – общее количество чисел. Каждая из следующих
строк содержит натуральные числа, не превышающих 10 000.
Пример входного файла
3
2
4
6
Для указанных данных ответом будет являться, {2}, {2, 4}, {2, 6}, {2, 4, 6}, то есть 4.
Решение 1
def prime(x):
if x == 1:
return False
for i in range(2, int(x**0.5)+1):
if x % i == 0:
return False
return True
f = open(’27A.txt’)
n = int(f.readline())
nums = []
for i in range(n):
nums.append(int(f.readline()))
ans = 0
for i in range(2**n):
t = i
mn = []
for j in range(n):
if t % 2 == 1:
mn.append(nums[j])
t //= 2
for x in mn:
if prime(x):
ans += 1
break
print(ans)
Решение 2
from itertools import combinations
def prime(x):
if x == 1:
return False
for i in range(2, int(x**0.5)+1):
if x % i == 0:
return False
return True
f = open(’27A.txt’)
n = int(f.readline())
nums = []
for i in range(n):
nums.append(int(f.readline()))
ans = 0
for j in range(1, n+1):
for i in combinations(nums, j):
for x in i:
if prime(x):
ans += 1
break
print(ans)