Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2014, 17:44   #1
coby9
Новичок
Джуниор
 
Регистрация: 21.04.2014
Сообщений: 3
По умолчанию Вычислить наименьшее общее кратное всех целых чисел от 1 до n

Есть 2 программы : (Вычислите наименьшее общее кратное всех целых чисел от 1 до n.
Входной файл содержит число n (1 ≤ n ≤ 1000).
Выведите целое число — ответ на задачу.) и (Найти наименьшее общее кратное набора из N целых чисел, лежащих в диапазоне от 1 до 1000. Под наименьшим общим кратным набора чисел понимается наименьшее из таких чисел, которые делятся на любое из чисел набора.Формат ввода
В первой строке задается количество чисел N (1 ≤ N ≤ 20) в наборе. Во второй строке перечисляются через пробел в любом порядке все N целых чисел набора.
Формат вывода
Вывести полученное наименьшее общее кратное для заданного набора чисел.)

Алгоритм в программах одинаковый, разница только со вводом данных! Реализовал поиск НОК обычном перебором в цикле, все работает, но программа превышает лимит времени! нужно реализовать с помощью разложения чисел на простые множители! Попытался реализовать http://math-prosto.ru/?page=pages/fi...k/find_nok.php второй способ! с помощью массивов, никак не могу добитья нужного результата, МБ кто подскажет! вот мой код:


int n,i,c,j,p,a,d,t,k;
main()
{scanf("%i",&n);
int A[n],B[n];
a=1;
for(i=0;i<n;i++)
{ A[i]=i+1;
//scanf("%d",&A[i]);
//if (a<A[i]) a=A[i];
}
a=n;
p=a;

//printf("%d",a);

d=2;
j=0;
while(d <=a)
{
if(a%d==0)
{ B[j]=d; //в массив В записываю простые множители наибольшего числа из исходного массива
a=a/d;
j++;
}
else
d=d+1;

}
t=1;
for (k=1;k<n-1;k++)
{
d=2;
i=0;
while(d <=A[k])
{
if(A[k]%d==0)
{
for (i=0;i<j-1;i++)
{ if (B[i]!=d)
{ t=d;
break;
}
if (B[i]==d) break;
}
A[k]=A[k]/d;
}

d=d+1;
p=p*t;
//printf("____%d",p);
t=1;
}
}

for(k=0;k<j;k++)
//printf("%d",B[k]);

printf("____%d",p);
}
coby9 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наименьшее общее кратное ovner Общие вопросы C/C++ 2 11.11.2012 16:38
найти наименьшее общее кратное трех чисел (Pascal) spone379 Помощь студентам 4 31.10.2012 18:23
два натуральных числа. Верно ли, что их наименьшее общее кратное есть нечетное число monokol Паскаль, Turbo Pascal, PascalABC.NET 2 21.12.2011 15:53
Наименьшее общее кратное temperus Общие вопросы C/C++ 0 10.03.2011 23:08
наименьшее общее кратное четырёх заданных натуральных чисел Васильева Зинаида Помощь студентам 0 22.11.2010 18:34