Member 14517556 Ответов: 2

Lcm из 10 последовательных чисел


I am attaching my codes with the question. I have used the logic :
I have first found all the prime numbers in the 10 consecutive numbers starting from 1. Used them to divide each number in the range of the 10 consecutive numbers starting from 1. Then i have counted their power and then have displayed the product.

I know that I am wrong at the last step but I want to know whether I can use my initial logic to solve this problem. Other logics are equally welcomed. Thank You in advance.


Что я уже пробовал:

count = 0
product = 1
num = 0
c1 = 0
for i in range(1,10):
    i += 1
    for n in range(2,i):
        num = i%n
        n += 1
        if num == 0:
            count += 1
        else:
            continue
    if count == 0:
            prime = i
    else:
            continue
    for x in range(2,10):
            if x%prime == 0:
                while x%prime==0:
                    c1 += 1
                product *= (prime**c1)
print(product)

Richard MacCutchan

Это математика, а не Программирование. Google для LCM, и вы найдете много объяснений.

Member 14517556

Я довольно хорошо знаком с lcm и могу легко найти его с помощью бумаги пера но я не могу понять как сделать то же самое с python

Richard MacCutchan

Это точно такая же проблема: поиск ценностей и их сравнение. Как я предположил в вашем другом вопросе, ваше время было бы лучше потратить на изучение языка python.

2 Ответов

Рейтинг:
15

Patrice T

Цитата:
Я довольно хорошо знаком с lcm и могу легко найти его с помощью бумаги пера но я не могу понять как сделать то же самое с python

Если вы знакомы с lcm, почему вы придерживаетесь самого сложного алгоритма?
Использование GCD намного проще и не требует простой факторизации, что является большим улучшением для больших чисел.
Наименьшее общее кратное - Википедия[^]

Насколько я вижу, этот цикл никогда не заканчивается (я не использую Python, но логика мне подозрительна):
while x%prime==0:
    c1 += 1

Цитата:
Я знаю, что ошибаюсь на последнем шаге.

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

27.3. ПДБ — отладчика Python — питон 3.6.1 документации[^]
Отладка в Python | Python покоряет Вселенную[^]
pdb – интерактивный отладчик - Python модуль недели[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


Member 14517556

Спасибо

Maciej Los

Хорошо объяснил!

Patrice T

Спасибо

Рейтинг:
0

CPallini

Вы должны разложить числа на множители, а затем умножить каждый найденный фактор на его максимальную мощность. Видеть Множители целого числа - код Розетты - Python[^].


Member 14517556

не могли бы вы объяснить немного подробнее, так как я этого не понимаю. О чем эта последняя строчка?

CPallini

В моем ответе была ошибка. Извините за доставленные неудобства. Теперь исправлено.

Member 14517556

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

CPallini

Смотрите мое обновленное решение.