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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2010, 22:52   #11
torah
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 19
По умолчанию

Попробую, конечно.
torah вне форума Ответить с цитированием
Старый 03.11.2010, 05:58   #12
pray_driver
Форумчанин
 
Аватар для pray_driver
 
Регистрация: 18.08.2010
Сообщений: 140
По умолчанию

Цитата:
Сообщение от Ghost of Night Посмотреть сообщение
А как же 50 - это тоже делитель 50!
А 70 - делитель 70!
лан, поправлюсь. Собственных делителей . Но ради 50 проверять интервал [26,49] это не метод. Мне кажется достаточно [0, 25] плюс число 50 в ответе добавить

Цитата:
Сообщение от Macmeprag Посмотреть сообщение
на сколько я знаю..3 способа избежать эту фигню..брейк, лейбл и континью
а ещё можно почитать "Теорию чисел" о делителях и их свойствах. Как я сказал, половину цикла можно вообще выкинуть. Препод всё правильно говорит, зачем компу работать вхолостую, если заранее известно, что среди половины его цикла нет делителей. Может ещё есть какие-нибудь свойства, всё читать надо.

Зачем он это делает?
Скажем я задам делители числа 1 000 000 000 000 000. Тогда та же лишняя половина даст о себе знать
Люди бывают десяти типов: те, кто знают двоичную систему, и те, кто нет

Последний раз редактировалось Stilet; 03.11.2010 в 08:27.
pray_driver вне форума Ответить с цитированием
Старый 03.11.2010, 08:10   #13
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Мне кажется достаточно [0, 25] плюс число 50 в ответе добавить
И ещё про 1 не забудьте.
_-Re@l-_ вне форума Ответить с цитированием
Старый 03.11.2010, 08:12   #14
pray_driver
Форумчанин
 
Аватар для pray_driver
 
Регистрация: 18.08.2010
Сообщений: 140
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
И ещё про 1 не забудьте.
1 больше, чем 0 )
Люди бывают десяти типов: те, кто знают двоичную систему, и те, кто нет
pray_driver вне форума Ответить с цитированием
Старый 03.11.2010, 08:13   #15
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
1 больше, чем 0
Да ну???Я всегда думал, что наоборот.
_-Re@l-_ вне форума Ответить с цитированием
Старый 03.11.2010, 08:33   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
1 больше, чем 0 )
Байка: Однажды хитрый препод решил обламать нас, доказав что наука математика может перевернуть весь мир. Он доказал что никакое число не может быть больше нуля. Вот примерные его слова (по памяти пишу используя вышеприведенный тезис)
Цитата:
1 не может быть больше нуля, если это так то должно срабатывать выражение
x*y>x*x при условии что y заведомо больше x
Допустим x=5 y=10 тогда 5*10>5*5 - справедливо? Да.
Теперь подставим y=1 x=0 получим 0*1=0*0 - отсюда вывод: 1 не может быть больше нуля ибо... 1 равно нулю
Прикиньте, народ (это еще в колледже было) повелся, и с тех пор у нас ходит байка о том что ноль это число, которому равны все
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.11.2010, 09:42   #17
torah
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 19
По умолчанию

Ребят, мне нужно математически дойти до того, чтобы он перебор не писал. Что если взять n/2 ? он все равно пишет. Label не подходит. Я в печали. Помогите.
torah вне форума Ответить с цитированием
Старый 03.11.2010, 10:09   #18
BeJIuKuu_Hexo4yxa
Пользователь
 
Регистрация: 13.10.2010
Сообщений: 96
По умолчанию

Конечно, то, что у препода в голове, никому не известно. И что он имел ввиду под фразой "изменить условие цикла, чтобы этот перебор не писался" остается только телепатить.

Код:
var number,i,t:longInt;
begin
  writeln('vvedite chislo);
  readln(number);
  writeln;
  writeln('delitel chisla');
  i:=1;
  t:=number;
  while i <= (number div 2) do
  begin
    if (number mod i=0) then
    begin
      writeln(i);
      t:=number div i;
      writeln (t);
    end;
    i:=i+1;
  end;
  i:=number;
  writeln ('try',i);      <------ ВОТ ЧТО ОН ДОПИСАЛ !
  readln;
end.
Я подправил в изначальном коде:
1. Поменял "end;" и "writeln ('try',i);" местами. Формально, строчка осталась, но вылезла из цикла )))
2. Поиск только по половине чисел
3. Строка i:=number; Для вывода в добавленной преподом строке последнего делителя.

Хотя лучше уточни, что препод имел ввиду
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. (Стив Макконнелл)
BeJIuKuu_Hexo4yxa вне форума Ответить с цитированием
Старый 03.11.2010, 10:24   #19
torah
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 19
По умолчанию

В общем, сейчас с ним говорила. Он всегда использует число 202. если не менять мой код, то он будет перебирать все числа до 101. Поэтому мне надо уменьшать правую границу, чтобы перебор был значительно меньше.
torah вне форума Ответить с цитированием
Старый 03.11.2010, 12:10   #20
BeJIuKuu_Hexo4yxa
Пользователь
 
Регистрация: 13.10.2010
Сообщений: 96
По умолчанию

Используй числа парами.
Например, нашелся делитель 2, значит делителем будет и 202 : 2 = 101, и т.д.
Тогда перебор будет только до корня из исходного числа.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. (Стив Макконнелл)
BeJIuKuu_Hexo4yxa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти все простые числа в заданном диапазоне Nikita++ Помощь студентам 8 20.10.2010 20:05
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49