Решение модуля 5.6 Инди-курс программирования на Python

Модуль 5.6 (Вложенные циклы).

Ниже представлены примеры задач с решением на тему Вложенные циклы.

Найдите сумму всех четырехзначных чисел, сумма цифр каждого из которых равна 20.

sum = 0
for i in range(1000, 10000):
    if sum(map(int, str(i))) == 20:
        sum += i
print(sum)

Ответ: 3489675

В этой задаче вам предстоит построить лесенку из чисел. Программа принимает на вход целое положительное число (n<=15) — количество уровней, ваша задача вывести n уровней, в каждом из которых стоят числа от 1 до значения уровня.

a = int(input())            # получаем число строк
for i in range(a):          # цикл до числа строк
    for j in range(i + 1):  # в первой строке будут 1 число во второй 2 и т.д  
        print(j + 1, end=' ')
    print()

Постулат Бертрана (теорема Бертрана-Чебышева, теорема Чебышева) гласит, что для любого n > 1 найдется простое число p в интервале n < p < 2n. Такая гипотеза была выдвинута в 1845 году французским математиком Джозефем Бертраном (проверившим ее до n=3000000) и доказана в 1850 году Пафнутием Чебышевым. Рамануджан в 1920 году нашел более простое доказательство, а Эрдеш в 1932 – еще более простое.

Ваша задача состоит в том, чтобы решить несколько более общую задачу – а именно по числу n найти количество простых чисел p из интервала n < p < 2n.

Напомним, что число называется простым, если оно делится только само на себя и на единицу.

Входные данные

Программа принимает на вход целое число n (2 ≤ n ≤ 50000).

Выходные данные

Вам необходимо вывести на экран одно число – количество простых чисел p на интервале  n < p < 2n.

n = int(input())  
count_numbers = 0      # счетчик простых целых чисел
dividers = 0           # счетчик делителей

for p in range(n + 1, 2 * n):  # цикл перебора чисел p в промежутке n < p < 2 * n
    for k in range(2, int(p ** 0.5) + 1):  # делители от 2 до квадратного корня (целое число) - середина диапазона
        if p % k == 0:      # если наше число делится без остатка
            dividers += 1   # увеличить количество разделителей
            break
    if dividers == 0:       # если количество делителей равно 0
        count_numbers += 1  # увеличить количество простых чисел
    dividers = 0       # сброс счетчика делителей

print(count_numbers)   # вывести количество простых целых чисел

Фурик очень любит уроки математики, поэтому, в отличие от Рубика, он их не посещает. Но теперь Фурик хочет получить хорошую оценку по математике. Для этого Лариса Ивановна, учительница математики, дала ему новое задание. Фурик сразу же решил эту задачу, а вы сможете?
Задана система уравнений: Решение модуля 5.6 Инди-курс программирования на Python

Нужно посчитать количество пар целых чисел (a, b) (0 ≤ a, b), которые удовлетворяют системе.

n, m = map(int, input().split())
count = 0

for a in range(n+1):
    for b in range(m+1):
        if a + b ** 2 == m and a ** 2 + b == n:
            count += 1
print(count)

Напишите программу для построения горизонтальных столбчатых диаграмм с помощью символа звёздочки. 

Формат ввода

Несколько натуральных чисел на одной строке.

Формат вывода

Несколько чисел на одной строке.

s = input().split()
for i in s:                    # цикл по списку чисел
    for j in range(int(i)):    # в цикле печатаем нужное кол-во *
        print('*',end='')
    print()                    # переход на новую строку 

Сортировка пузырьком

Все просто, вам поступает число n — количество элементов в списке, и затем сам список.

Ваша задача отсортировать список по возрастанию при помощи пузырьковой сортировки, в случае если элементы соседние совпадают менять их ненужно.

В качестве ответа нужно вывести отсортированный список и какое количество раз пришлось переставлять элементы в процессе сортировки

n = int(input())  
l = list(map(int, input().split()))
cnt = 0                           # счетчик перестановок
for i in range(0, n - 1):
    flag = False                  # Истина, если были перестановки. 
                                  # Ложь - массив отсортирован, можно выходить из цикла
    for j in range(n - i - 1):
        if l[j] > l[j + 1]:       # если предыдущее число больше следующего, то надо переместить
            l[j], l[j + 1] = l[j + 1], l[j] # перемешаем значения
            cnt += 1              # плюсуем счетчик
            flag = True
    if not flag:
        break
print(*l, '\n'+str(cnt))

Сортировка вставками

Программа получает на вход число n — количество элементов в списке, и затем в следующей строке сам список.

Ваша задача отсортировать список по возрастанию при помощи сортировки вставками, в случае если элементы соседние совпадают менять их ненужно.

В качестве ответа нужно вывести отсортированный список.

n = int(input())                    # Длина массива чисел
s = list(map(int, input().split())) # Массив чисел
for i in range(n):                  # Проходим по массиву n раз
    for j in range(i,0,-1):
        if s[j]<s[j-1]:               # Если число меньше чем предыдущее, 
            s[j],s[j-1] = s[j-1],s[j] # меняем их местами
        else:                         # если условие не выполняется, выходим из внутреннего цикла, т.к.предыдущие числа отсортированы
            break
print(*s)
Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x