Пароль (Python)

Определить какое количество паролей соответствует заданным условиям.

  • условие
  • решение

У пользователя в качестве пароля компьютерной системы используется такое простое четырехзначное число, для которого первая цифра равна сумме трех последующих.
Какое максимальное количество паролей подходит под указанные условия?

Проверять число на простоту будем при помощи функции.

Например, функция из учебника за 10 класс К.Ю. Полякова. Она лаконична и без рекурсии.

Если не найдётся числа больше 1 (то есть от 2) на которое заданное число будет делиться без остатка, функция вернёт True (число простое). Если найдётся – False.

Почему проверяется условие k * k <= n. Если n делится без остатка не только на 1 и само себя, можно сказать, что оно является произведением двух чисел. При этом одно из них меньше либо равно √n, а другое не меньше. Чтобы найти эту пару достаточно проверить числа до √n.

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

Первая цифра не может быть нулём. Чётные числа не являются простыми (делятся на 2) – число не может заканчиваться на 0, 2, 4, 6, 8. Также число не должно заканчиваться на 5 (делится на 5), 0 мы уже исключили.

Пусть count – количество подходящих чисел,

a1, a2, a3, a4 – первая, вторая, третья и четвёртая цифры числа соответственно. Будем проверять условие, что “первая цифра равна сумме трех последующих”.

number – составленное из цифр число. Его мы передадим в качестве аргумента в функцию isPrime().

В итоге, программа может выглядеть так:

Выведем подходящие числа и, в последней строке, их количество :

пароль_2

Условие задачи из архива олимпиады по информатике и компьютерной безопасности