Найти - Пользователи
Полная версия: Помогите
Начало » Центр помощи » Помогите
1 2
Rudey
Нужно решить задачу:
Найдите хоты бы одно натуральное число, которое делится на 11, а при делении на 2,3,4…,10 дает в остатке 1.
P.S прикол в том что одно число должно выполнять все эти условия.
py.user.next
Ты можешь решить это аналитически, а можешь программно. Напиши программу, которая перебирает числа по порядку и проверяет каждое на все эти условия.
Rudey
py.user.next
Ты можешь решить это аналитически, а можешь программно. Напиши программу, которая перебирает числа по порядку и проверяет каждое на все эти условия.
Скажите пожалуйста почему программа не хочет выполняться.
Вот код:
a=0
while a%11!=0 and a%2!=1:
a+=1
print(a)
Я хочу проверить эти два условия, компилятор не показывает ошибок, но программа не выполняется.
py.user.next
Цикл не выполняется, потому что 0 % 11 = 0.
Rudey
py.user.next
Цикл не выполняется, потому что 0 % 11 = 0.
Я поменял значение a, теперь оно равно 1, но программа все равно не выполняется.
FishHook
Rudey
но программа все равно не выполняется.

Замечательно выполняется!

PEHDOM
Rudey
Я поменял значение a, теперь оно равно 1, но программа все равно не выполняется.
Это потому что 1%2 ==1, а 1%11=1
следователь ваше условие while 1%11!=0 and 1%2!=1 превращаеться в while True and False, а True and False равно False. Вот цикл и прерывается.
замените and на or и будет вам щастье. Хотя ваш алгоритм перебора всех цифр далко не идеален, можно сделать побыстрее, с меньшим колличеством итераций цикла.
Rudey
PEHDOM
Можете показать каким образом можно оптимизировать мой код. Я уже очень долго сижу над этой задачей, был бы благодарен за помощь.
FishHook
Rudey
Для начала, я бы подумал над тем, что на 11 нацело может делиться только каждое одиннадцатое число, нет смысла перебирать весь числовой ряд, достаточно перебирать с шагом 11.
PEHDOM
Rudey
Можете показать каким образом можно оптимизировать мой код.
FishHook дело говорит , на 11 нацело может делиться только каждое одиннадцатое число поэтому нет смысла перебирать все числа:
 a= 11
while True:
    for i in range(2, 11):
        if a%i != 1:
            a += 11
            break
    else:
        break
print(a)
>>>
25201
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB