n15.logic02del.py

Задание 15: Логические выражения (арифметические операции) Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Для какого наименьшего натурального числа А логическое выражение (¬ДЕЛ(x,26)∧ДЕЛ(x,A))→(ДЕЛ(x,39)∨¬ДЕЛ(x,A)) тождественно истинно (т. е. принимает значение 1 при любом неотрицательном целом значении переменной х)?
"""
Задание 15: Логические выражения (арифметические операции)

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

(¬ДЕЛ(x,26)∧ДЕЛ(x,A))→(ДЕЛ(x,39)∨¬ДЕЛ(x,A))

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

def Del(n, m):
    return n % m == 0

for A in range(1, 5000):
    A_cool = True
    for x in range(0, 10_000):
                # через преобразование и упрощение
                # ¬(¬ДЕЛ(x,26)∧ДЕЛ(x,A)) ∨ (ДЕЛ(x,39)∨¬ДЕЛ(x,A))
                # де Морган 
                # (ДЕЛ(x,26)∨¬ДЕЛ(x,A)) ∨ (ДЕЛ(x,39)∨¬ДЕЛ(x,A))
                # ДЕЛ(x,26) ∨ ДЕЛ(x,39) ∨ ¬ДЕЛ(x,A)
                #if (Del(x, 26) or Del(x, 39) or not Del(x, A)) == 0:
        if ( (not((not Del(x,26)) and Del(x,A))) or (Del(x,39) or (not Del(x,A))) ) == 0:
            A_cool = False
            break
    if A_cool == True:
        print(A)
        break
    
        """
        Ответ: 26
        """
"""
Задание 15: Логические выражения (арифметические операции)

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

(¬ДЕЛ(x,26)∧ДЕЛ(x,A))→(ДЕЛ(x,39)∨¬ДЕЛ(x,A))

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

def Del(n, m):
    return n % m == 0

for A in range(1, 5000):
    A_cool = True
    for x in range(0, 10_000):
                # через преобразование и упрощение
                # ¬(¬ДЕЛ(x,26)∧ДЕЛ(x,A)) ∨ (ДЕЛ(x,39)∨¬ДЕЛ(x,A))
                # де Морган 
                # (ДЕЛ(x,26)∨¬ДЕЛ(x,A)) ∨ (ДЕЛ(x,39)∨¬ДЕЛ(x,A))
                # ДЕЛ(x,26) ∨ ДЕЛ(x,39) ∨ ¬ДЕЛ(x,A)
                #if (Del(x, 26) or Del(x, 39) or not Del(x, A)) == 0:
        if ( (not((not Del(x,26)) and Del(x,A))) or (Del(x,39) or (not Del(x,A))) ) == 0:
            A_cool = False
            break
    if A_cool == True:
        print(A)
        break
    
        """
        Ответ: 26
        """

Репозиторий на GitHub