Тема 15. Алгебра логики – преобразование логических выражений

15.06 Смешанное

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгебра логики – преобразование логических выражений
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#33605

Обозначим через ДЕЛ(n  , m  ) утверждение «натуральное число n  делится без остатка на натуральное число m  ».

На числовой прямой дан отрезок B = [50,70]  . Для какого наибольшего натурального числа A  формула

¬ДЕ Л(x,A) → ((x ∈ B) → ¬Д ЕЛ (x,15))

тождественно истинна (то есть принимает значение 1  при любом натуральном значении переменной x  )?

Показать ответ и решение

Решение 1 (ручками):
Система для врагов:

(
|||x ||... A
|{
|x ∈ B
|||(  ..
 x . 15

Враги мечтают, чтобы x ∈ [50;70]  B  ) и при этом они делились на 15  . Таким образом, единственный подходящий x  на отрезке [50;70]  , делящийся на 15  , равен 60  . Тогда мечты врагов такие: «Вот бы x  , равный 60  , не делился на A  ».

Друзья говорят: «Нет, 60  делится на A  ». Максимальное A  равно максимальному делителю числа 60  , то есть Amax = 60  . Это и есть ответ.

 

Решение программой

Мы решаем задачу перебором, чтобы найти наибольшее число A  , при котором заданное логическое выражение верно для всех натуральных чисел x  . Идея решения заключается в следующем:

1. Мы определяем вспомогательную функцию inn(x, B), которая проверяет принадлежность числа x  отрезку B = [50,70]  .

- Функция возвращает True, если x  больше или равно левому концу отрезка B[0]  и меньше или равно правому концу B [1]  .

- Иначе возвращается False.

2. Мы определяем основную функцию f(x, A), которая проверяет истинность формулы для конкретного x  и A  .

- Логическое выражение (¬Д ЕЛ (x,A )) → ((x ∈ B ) → ¬ ДЕЛ (x,15))  переводится в Python как (x % A != 0) <= (inn(x, B) <= (x % 15 != 0)).

- Здесь оператор <= используется для имитации импликации: если левая часть ложна или правая часть истина, то выражение истинно.

3. Далее мы перебираем все возможные значения A  от 1 до 299 с помощью цикла for A in range(1, 300).

- Для каждого A  мы предполагаем, что оно подходит, и создаём логический флаг flag = True.

- Для проверки тождественной истинности выражения для всех x  , мы перебираем x  от 1 до 499 с помощью вложенного цикла for x in range(1, 500).

- Для каждого x  вызываем функцию f(x, A).

      - Если функция возвращает False, это значит, что формула ложна для данного x  .

      - В этом случае устанавливаем flag = False и прерываем внутренний цикл по x  , так как проверка для остальных значений не нужна.

4. После завершения проверки всех x  , если flag остался равен True, это значит, что формула верна для всех x  при текущем A  . Мы обновляем переменную maxim, которая хранит наибольшее подходящее A  .

5. В конце перебора выводим значение maxim — наибольшее A  , для которого формула тождественно истинна.

# Функция проверяет принадлежность числа x отрезку B
def inn(x, B):
    # Возвращаем True, если x принадлежит отрезку [B[0], B[1]]
    return B[0] <= x <= B[1]

# Функция проверяет истинность формулы для конкретного x и A
def f(x, A):
    B = [50, 70]  # Задаем отрезок B
    # Формула в Python: импликация через <=
    return (x % A != 0) <= (inn(x, B) <= (x % 15 != 0))

# Переменная для хранения наибольшего подходящего A
maxim = 0

# Перебор возможных значений A от 1 до 299
for A in range(1, 300):
    # Предполагаем, что текущее A подходит
    flag = True
    # Проверяем формулу для всех x от 1 до 499
    for x in range(1, 500):
        # Если формула ложна для текущего x
        if not(f(x, A)):
            # Устанавливаем флаг в False
            flag = False
            # Прерываем цикл по x, текущее A не подходит
            break
    # Если выражение истинно для всех x, обновляем наибольшее подходящее A
    if flag:
        maxim = A

# Выводим наибольшее подходящее A
print(maxim)

Ответ: 60

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!