кодесурса
«Python

Python: принять четное число от пользователя и создать комбинации, которые выражают данное число в виде суммы двух простых чисел

script1adsense2code
script1adsense3code

Python Basic - 1: Упражнение 53 с решением

Напишите программу на Python, которая принимает четное число (> = 4, число Гольдбаха) от пользователя и создает комбинации, которые выражают данное число в виде суммы двух простых чисел. Выведите количество комбинаций.

Число Гольдбаха: число Гольдбаха является положительным четным целым числом, которое может быть выражено как сумма двух нечетных простых чисел. [4] Поскольку четыре - это единственное четное число, большее двух, для которого требуется записать четное простое число 2, чтобы записать его в виде суммы двух простых чисел, еще одна форма утверждения гипотезы Гольдбаха состоит в том, что все четные целые числа, большие 4, являются числами Гольдбаха.
Выражение данного четного числа в виде суммы двух простых чисел называется разбиением Гольдбаха этого числа. Ниже приведены примеры разделов Гольдбаха для некоторых чётных чисел:
6 = 3 + 3
8 = 3 + 5
10 = 3 + 7 = 5 + 5
12 = 7 + 5
...
100 = 3 + 97 = 11 + 89 = 17 + 83 = 29 + 71 = 41 + 59 = 47 + 53

Иллюстрированная презентация:

«Python:

Пример решения :

Код Python:

import sys
from bisect import bisect_right
from itertools import chain, compress
print("Input an even number (0 to exit):") 
ub = 50000
is_prime = [0, 0, 1, 1] + [0]*(ub-3)
is_prime[5::6] = is_prime[7::6] = [1]*int(ub/6)
primes = [2, 3]
append = primes.append
 
for n in chain(range(5, ub, 6), range(7, ub, 6)):
    if is_prime[n]:
        append(n)
        is_prime[n*3::n*2] = [0]*((ub-n)//(n*2))
primes.sort()
for n in map(int, sys.stdin):
    if not n:
        break
    if n%2:
        print("Number of combinations:")  
        print(is_prime[n-2])
    else:
        print("Number of combinations:")  
        print(len([1 for p in primes[:bisect_right(primes, n/2)] if is_prime[n-p]]))

Пример вывода:

 Введите четное число (0 для выхода):
 100
Количество комбинаций:
6

Блок - схема:

«Блок-схема:

Редактор кода Python:

Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.

Предыдущий: Напишите программу на Python для вычисления суммы первых n заданных простых чисел.
Далее: Напишите программу на Python, чтобы создать максимальное количество областей, полученных путем рисования n заданных прямых линий.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code