2520 - самое маленькое число, которое делится без остатка на все числа от 1 до 10.
Какое самое маленькое число делится нацело на все числа от 1 до 20?
Все остальные желающие могут присойденится и быдлокодить на своих любимых языках.
Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©
Неактивен
Lord_Evil, зачем на руби-то? Это же чисто математическая задача. Ответ (как я быстренько посчитал): 12 252 240
Добавлено спустя 07 мин 55 с:
Быдлорешение на быдлопетончеге:
i = 0
while True:
i += 1
isdel = True
for j in range(1,21):
if i % j != 0:
isdel = False
if isdel == True:
print(i)
break
(Очень) банальный перебор. До сих пор дожидаюсь его результатов. Нормальное решение, возможно, запостю позже.
http://nolinux.w2c.ru - море баттхерта и деаонимизации
Неактивен
Ответ (как я быстренько посчитал): 12 252 240
Видимо у меня калькулятор неправильный, выдаёт что 12252240/19 это приблизительно 644854,7368421052631578947368421052631578947368421052631578947368
Yesterday it worked.
Today it is not working.
Windows is like that.
Неактивен
ikkunan salvataja, миль пардон. Торопился посчитать В любом случае это чистая математика без программирования.
http://nolinux.w2c.ru - море баттхерта и деаонимизации
Неактивен
Все остальные желающие могут присойденится и быдлокодить на своих любимых языках.
Метод перебора. это же очевидно.
Не ламерствуй лукаво.
"А петь мне нельзя - постановление суда" (с) Бендер
Неактивен
В приницпе, если рассматривать программирование и общий случай (самое маленькое число, которое делится на все числа от 1 до n), то путь решения виден такой:
Создать пустой массив для делителей числа
Поочерёдно разложить все числа от 1 до n на множители
После каждого разложения добавлять недостающие и только недостающие множители в список
Перемножить делители в итоге
Добавлено спустя 01 мин 30 с:
Метод перебора. это же очевидно.
Флаг в руки перебирать. Я уже выложил скрипт для перебора. На моём двухядерном процессоре он до сих пор ответ ищет.
http://nolinux.w2c.ru - море баттхерта и деаонимизации
Неактивен
Создать пустой массив для делителей числа
Поочерёдно разложить все числа от 1 до n на множители
После каждого разложения добавлять недостающие и только недостающие множители в список
Перемножить делители в итоге big_smile
Найти все простые меньшие заданного N методом Sieve of Eratosthenes. При получении первого простого, да и последующих тоже, берём не само простое, а его степень не превышающую N и поочерёдно производим домножение.
UPD: Несколько сумбурно выразился, не показатель степени не должен превышать N, а простое в этой степени, т.е. применительно к данному случаю
2^4⋅3^2⋅5⋅7⋅11⋅13⋅17⋅19
Редактировался ikkunan salvataja (24-06-11 17:32:01)
Yesterday it worked.
Today it is not working.
Windows is like that.
Неактивен
Кстати, полностью правильный ответ задачи: 232792560
Найти все простые меньшие заданного N методом Sieve of Eratosthenes.
Можно нескромный вопрос? Это так решето Эрастофена из школьный программы на английском звучит? Я не понимаю, зачем его писать именно на английском.
http://nolinux.w2c.ru - море баттхерта и деаонимизации
Неактивен
Я не понимаю, зачем его писать именно на английском.
Ну во всяких учебниках по програманию оно именно так пишется. Привычка.
Yesterday it worked.
Today it is not working.
Windows is like that.
Неактивен
Найти все простые меньшие заданного N методом Sieve of Eratosthenes. При получении первого простого, да и последующих тоже, берём не само простое, а его степень не превышающую N и поочерёдно производим домножение.
Эт понятно. Ждем реализации от бабуши Хочу увидеть идею в коде воплощенной.
дайте-ка что-нибудь из олимпиадного программирования подкину.
Злой ты, этого и я так просто не осилю..
Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©
Неактивен
Я сейчас далек от своего ноута, комп не мой, но решение на Си, методом перебора, через часик будет на руби:
# include <stdio.h>
int main()
{
int a = 1;
while(1)
{
a++;
printf("%d\n",a);
int c = 0;
int b;
for(b = 1; b <= 20; b++)
{
if((a % b) != 0) c = 1;
}
if(c == 0)
{
printf("%d",a);
int ch = getchar();
break;
}
}
}
Неактивен
Babusha, судя по коду, через часик ты только цифру дождёшься. Посмотри на ответ (232 792 560) и подумай, сколько раз компьютер будет проверять все числа от 1 до ответа на деление нацело.
http://nolinux.w2c.ru - море баттхерта и деаонимизации
Неактивен
SemyonKozakov, у меня решение на си посчитало за ~30 сек. Это твой говногалимый петун будет считать три часа, вместе с руби, который в данном плане не лучше себя поведет.
Неактивен
Мдя. Туповатенькое решение. У меня оно за 30 секунд дошло только до одного миллиона.
Неактивен
сколько раз компьютер будет проверять все числа от 1 до ответа на деление нацело.
Интересно, а на асме примеры будут?
Не ламерствуй лукаво.
"А петь мне нельзя - постановление суда" (с) Бендер
Неактивен
Babusha, я забыл уточнить - смысл решения этих задач в том, чтобы само решение состояло из минимального числа итераций. Икуна очень хорошо выше объяснил, как оформить решение. Иначе если у тебя будет напр. в задании число 100, то можешь представить, сколько оно будет считать. У Семена вообще походу камп сгорит
Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©
Неактивен
смысл решения этих задач в том, чтобы само решение состояло из минимального числа итераций.
Я бы ещё порекомендовал вначале выставить флаг показателя степени, т.е. как только мы выяснили что квадрат очередного простого больше N, мы этот флаг сбрасываем и дальнейшие проверки, а не будет ли N больше квадрата, куба итд этого простого, проводить не будем. В случае ассемблера можно вообще подмахнуть код, т.е. в начало процедуры этой проверки подставить код джампа на процедуру домножения.
Правда в винде или линуксе за это мы сразу получим segmentation fault, но в DOS или OS/2 это покатит и даст ощутимый выигрыш в быстродействии.
Yesterday it worked.
Today it is not working.
Windows is like that.
Неактивен
Вот еще задача интересная:
http://euler.jakumo.org/problems/view/4.html
Число-палиндром с обеих сторон (справа и слева) читается одинаково. Самое большое число-палиндром, полученное произведением двух двухзначных чисел – 9009 = 91х99.
Найдите самый большой палиндром, полученный произведением двух трёхзначных чисел.
Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©
Неактивен
Слегка оптимизированный перебор. Вспоминать руби времени не было)) 0.16 сек на нетбуке.
Вообще, мне кажется (но ужо точно не помню) был у этой задачи другой вариант решения, но он, в отличии от перебора, требует размышлений)
using System;
using System.Diagnostics;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static int Brute(int[] numbers )
{
int delta = numbers[numbers.Length - 1];
for (int value = delta; ; value += delta)
{
bool result = true;
foreach (var number in numbers)
{
if (value % number != 0)
{
result = false;
break;
}
}
if(result) return value;
}
}
static void Main(string[] args)
{
var numbers = Enumerable.Range(1, 20).ToList();
//start timer
Stopwatch timer = new Stopwatch();
timer.Start();
//array filtration
for(int right = 0; right<numbers.Count; right++)
{
int rightIndex = numbers.Count - 1 - right;
for (int left = 0; left < rightIndex; left++)
{
if (numbers[rightIndex] % numbers[left] == 0)
{
numbers.RemoveAt(left);
left--;
rightIndex--;
}
}
}
int value = Brute(numbers.ToArray());
//stop timer
timer.Stop();
//see what we've got after filtration and result
numbers.ForEach(Console.WriteLine);
Console.WriteLine("End in {0} ms. Value is {1}", timer.ElapsedMilliseconds, value);
}
}
}
Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.
Неактивен
Tiphon, ну так обратная факторизация же.
находим наименьшее общее кратное чисел с 1 по 20 — и вуаля.
И?
Мы разве где-то спорим?
Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.
Неактивен
Вот еще задача интересная:
http://euler.jakumo.org/problems/view/4.html
Ничего интересного, решается в две строчки.
Кажется, так:
Редактировался Дестер (25-06-11 00:50:26)
Неактивен