Предмет: Информатика, автор: lfif8549

ПОМОГИТЕ!!! ЯЗЫК ПИТОН!
Суперчисла
Суперчислом называется число, являющееся суммой двух простых чисел из диапазона [2…B]. Требуется найти все суперчисла из заданного диапазона [A…B].
Ввод
3 10
Вывод
4
5
6
7
8
9
10

Ответы

Автор ответа: Аноним
0

Код ниже есть в файле source.txt, который следует переименовать в source.py

# coding=utf-8

import math

data=input("Введите целочисленные A и B через пробел: ").split(' ')# К примеру "3 10"

""" Преобразуем ввод в числа:

"""

(A, B)=(int(data[0]), int(data[1]))

assert B > 2, "B должно быть больше двух."

''' $primes, list - список всех простых чисел в диапазоне [2 .. B].

'''

primes=list()

for integer in range(2, B + 1):

if (math.factorial(integer - 1 ) % integer) == (integer - 1):

 

 """ Данное число простое.

  Добавляем в список:

 """

 primes.append(integer)

""" Складываем все простые числа между собой, но только если сумма меньше или равна B.

После методом set сортируем и удаляем неуникальные значения.

"""

result=set([digit1 + digit2 for digit1 in primes for digit2 in primes if digit1 + digit2 in range(A, B + 1)])

print(result)

Приложения:

roki2006: может быть написать проще код для строчки result=set([digit1 + digit2 for digit1 in primes for digit2 in primes if digit1 + digit2 <= B])
roki2006: если ввести интервал 50..60 то получим все числа от 4..60
roki2006: это и есть неверный ответ по проверяющей программе
roki2006: получается что мы игнорируем А
roki2006: надо как-то оптимизировать вывод суперчисел именно для интервала например 50..60, но так, чтобы программа не теряла в скорости
lfif8549: Да уж.... Недавно начала изучать питон и наткнулась на эту задачу, сама решить не смогла...
lfif8549: Можете помочь?
roki2006: Надо ждать автора этого скрипта unnamedhostname2, пока нет больше идей
roki2006: Решайте пока другие задания модуля)
lfif8549: А вы сами не можете прислать ваш вариант кода?
Похожие вопросы
Предмет: Русский язык, автор: mariapopova2002
Предмет: Русский язык, автор: Шельмочка