1) Сколько целых чисел, принадлежащих числовому отрезку [2894;174882], оканчивается на 8 и имеет сумму цифр больше

  • 65
1) Сколько целых чисел, принадлежащих числовому отрезку [2894;174882], оканчивается на 8 и имеет сумму цифр больше 22? Какое является тринадцатым числом в этой последовательности? В ответе укажите два целых числа: количество цифр, а затем тринадцатое число. (Напишите программу)
2) Напишите программу, которая находит простые числа среди целых чисел на отрезке [245 690; 245 756]. Выведите на экран найденные простые числа в порядке возрастания, а слева от каждого числа укажите его порядковый номер в последовательности.
Григорьевна
64
Решение:
1) Для решения данной задачи, напишем программу на языке Python:

python
def calculate_numbers():
count = 0
thirteenth_number = 0

for number in range(2894, 174883):
if number % 10 == 8 and sum_of_digits(number) > 22:
count += 1
thirteenth_number = number

if count == 13:
break

return count, thirteenth_number


def sum_of_digits(number):
return sum(int(digit) for digit in str(number))


count, thirteenth_number = calculate_numbers()

print(count, thirteenth_number)


Давайте подрробно разберем программу:
- В функции `calculate_numbers` мы создаем две переменные: `count` для подсчета количества чисел и `thirteenth_number` для хранения тринадцатого числа.
- Затем мы используем цикл `for` для прохода по числам в пределах от 2894 до 174882.
- Внутри цикла мы проверяем, оканчивается ли число на 8 (`number % 10 == 8`) и имеет ли сумму цифр больше 22 (`sum_of_digits(number) > 22`).
- Если условие выполняется, увеличиваем счетчик `count`, а также обновляем значение `thirteenth_number`.
- Если `count` достигает значения 13, мы выходим из цикла с помощью оператора `break`.
- Возвращаем значения `count` и `thirteenth_number`.
- Затем выводим значения на экран.

2) Теперь напишем программу для нахождения простых чисел на заданном отрезке:

python
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


def find_primes():
primes = []
count = 1

for number in range(245690, 245757):
if is_prime(number):
primes.append((number, count))
count += 1

return primes


primes = find_primes()

for prime, count in primes:
print(count, prime)


Давайте разберем эту программу:
- В функции `is_prime` мы проверяем, является ли число простым. Если число меньше 2, оно не является простым, поэтому мы возвращаем `False`. Затем мы проверяем, делится ли число нацело на какое-либо число из диапазона от 2 до корня из числа `n`. Если делится, то число не является простым, и мы возвращаем `False`. В остальных случаях число считается простым и мы возвращаем `True`.
- В функции `find_primes` мы создаем пустой список `primes` для хранения простых чисел и переменную `count` для подсчета порядкового номера простого числа.
- Затем мы используем цикл `for` для прохода по числам в пределах от 245690 до 245756.
- Внутри цикла мы использовать функцию `is_prime` для проверки, является ли число простым.
- Если число является простым, добавляем его в список `primes` вместе с его порядковым номером, увеличиваем счетчик `count`.
- Возвращаем список `primes`.
- Наконец, мы выводим простые числа и их порядковые номера на экран.