Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 17, 2019 18:47:36

Rudey
Зарегистрирован: 2019-02-17
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите

Нужно решить задачу:
Найдите хоты бы одно натуральное число, которое делится на 11, а при делении на 2,3,4…,10 дает в остатке 1.
P.S прикол в том что одно число должно выполнять все эти условия.

Офлайн

#2 Фев. 18, 2019 02:55:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Помогите

Ты можешь решить это аналитически, а можешь программно. Напиши программу, которая перебирает числа по порядку и проверяет каждое на все эти условия.



Отредактировано py.user.next (Фев. 18, 2019 02:56:10)

Офлайн

#3 Фев. 18, 2019 08:51:57

Rudey
Зарегистрирован: 2019-02-17
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите

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

Офлайн

#4 Фев. 18, 2019 09:01:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Помогите

Цикл не выполняется, потому что 0 % 11 = 0.



Офлайн

#5 Фев. 18, 2019 09:45:40

Rudey
Зарегистрирован: 2019-02-17
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите

py.user.next
Цикл не выполняется, потому что 0 % 11 = 0.
Я поменял значение a, теперь оно равно 1, но программа все равно не выполняется.

Офлайн

#6 Фев. 18, 2019 10:48:32

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите

Rudey
но программа все равно не выполняется.

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



Офлайн

#7 Фев. 18, 2019 10:58:59

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Помогите

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 и будет вам щастье. Хотя ваш алгоритм перебора всех цифр далко не идеален, можно сделать побыстрее, с меньшим колличеством итераций цикла.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 18, 2019 11:04:45)

Офлайн

#8 Фев. 18, 2019 12:05:07

Rudey
Зарегистрирован: 2019-02-17
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите

PEHDOM
Можете показать каким образом можно оптимизировать мой код. Я уже очень долго сижу над этой задачей, был бы благодарен за помощь.

Офлайн

#9 Фев. 18, 2019 12:22:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите

Rudey
Для начала, я бы подумал над тем, что на 11 нацело может делиться только каждое одиннадцатое число, нет смысла перебирать весь числовой ряд, достаточно перебирать с шагом 11.



Офлайн

#10 Фев. 19, 2019 16:15:33

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Помогите

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
>>>



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 19, 2019 16:22:59)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version