Домашние задания: Информатика

Помогите с информатикой срочноооо

2520 - самое маленькое число, которое делится без остатка на все числа от 1 до 10.
Какое самое маленькое число делится нацело на все числа от 1 до 20?
Нужно написать решение на языке python только самое простое
А вот при чём здесь вообще какой-то там Паскаль (а тем более совершенно идиотские программы на нём), если надо написать простое решение приведённой задачи на Питоне? Для этого надо всего лишь навсего составить цикл от одного до двадцати включительно для расчёта наименьшего общего кратного всех натуральных чисел от 1 до 20. Формула наименьшего общего кратного:
НОК(a,b)=a•b/НОД(a,b).
Наименьшее общее кратное считается последовательно. Функция наибольшего общего делителя есть в модуле math и называется gcd. Вот весь код, полный исходник, причём весьма простой:
from math import gcd; n = 1
for i in range(1, 21): n *= i // gcd(n, i)
print(n)
Искомое число 232792560. Вместо range(1,21) можно написать range(2,21) -будет, естественно, то же самое, только даже логичнее...
✿ ✿ ❤ ✿ ✿ ❤ ✿ ✿ ❤ ✿ ✿
Оксана Левченко
Оксана Левченко
66 572
Лучший ответ
Я тоже не знаю питона, но на паскале самое простое решение будет примерно таким:
Katerinka Ульянова;*
Katerinka Ульянова;*
77 108
Света Лукьянова Ну это высший пилотаж! Просили написать простенькую, понятную программу!!! А здесь одну строку понять трудно!!! :)))
Katerinka Ульянова;* Зато всего три строки…
Если решение самое простое (но не оптимальное) и на PascalABC :)
Ответ:
931 170 240
Alexander Bazel
Alexander Bazel
73 229
Alexander Bazel Переведи в Питон!
Оля Наумова Вы совершенно не жалеете время работы компьютера. Каждое число проверять на делимость, и так сотню миллионов раз. Можно существенно сократить число проверок, пропуская числа, не кратные уже проверенным делителям
Задание слегка ошибочное. Ибо самое маленькое число близко к минус бесконечности. Ну, 0 на крайняк. Если речь идёт про натуральные числа, то тогда - да. Так что и программа может быть 2 видов - либо бесконечный цикл (ну либо просто ответ "минус бесконечность" или "такого числа не существует") в случае самого маленького числа, либо в случае самого маленького НАТУРАЛЬНОГО числа, то выдаст число (сие число: 232792560), да и то, смотря как понимать сие - ибо данное число, если от 1 до 20 всё включительно, а если 1 и 20 не считать, т.е. брать от 2 до 19, то, в принципе, число будет схожим.

Python я не особо - там, вроде, нет цикла repeat, а вместо "mod" используется "%", так что напишу на Паскале - в Python уж как-нибудь без меня или я чуть позже попробую свои силы в Python - тогда см. в комментариях к этому ответу, а пока...

...Ладно, вот код (как я понял, и 1 и 20 включены, заранее предупреждаю, программа считает долго (у меня минуты 2 считает, т.е. показывает сперва пустой экран, а через 2 минуты выдаёт результат):

Program P1;
uses crt;
var a, i: integer;
begin
clrscr;
a:=0;
i:=1;
repeat
if (i mod 1 = 0) and (i mod 2 = 0) and (i mod 3 = 0) and (i mod 4 = 0) and (i mod 5 = 0)
and (i mod 6 = 0) and (i mod 7 = 0) and (i mod 8 = 0) and (i mod 9 = 0) and (i mod 10 = 0)
and (i mod 11 = 0) and (i mod 12 = 0) and (i mod 13 = 0) and (i mod 14 = 0) and (i mod 15 = 0)
and (i mod 16 = 0) and (i mod 17 = 0) and (i mod 18 = 0) and (i mod 19 = 0) and (i mod 20 = 0) then a:=i;
i:=i+1;
until a<>0;
write ('Ответ: ', a);
readkey;
end.
Алена Кембель
Алена Кембель
43 559
Alexander Bazel Согласен, но я почему-то искал НАИБОЛЬШЕЕ (не внимательно прочел условие задачи!!! :)))
Alexander Bazel Учёл пропущенную проверку на mod 20. :))) Получилось:
Katerinka Ульянова;*
 i mod 1=0 — Лишнее, т.к. все натуральные числа делятся на 1
i mod 2=0 — Лишнее, т.к. входит во множество i mod 4=0
i mod 3=0 — Лишнее, т.к. входит во множество i mod 6=0
и т.д.
В итоге остаются только проверки для делителей от 11 до 20,
что даст выигрыш в количестве делений и уменьшит время выполнения.
А если ещё и начинать делить с 20 в сторону уменьшения, то выигрыш по времени будет ещё больше.
Ты в каком класе?