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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2009, 12:44   #21
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Цитата:
Сообщение от Greblin Посмотреть сообщение
k1r1ch
Ну что уж Вы, Алгоритм Евклида не знаете В школе это на обычной математике классе в 8ом проходят
Так я и так в 8 классе))) Почитаю, разберусь...
Цитата:
Сообщение от Altera Посмотреть сообщение
Тебе и smallInt подойдёт. Ну можешь integer юзать.
Так охото же сделать поддержку больших чисел!
Цитата:
Сообщение от Altera Посмотреть сообщение
Чё, у AIPM иконку стибрил?
Это временно))

---------------------------------------------------------

Код:
procedure TMainForm.Reducing(var N1, N2: Int64);
var MinN: Int64; I: integer;
begin
  InReducing := true;
  MinN := Min(Abs(N1), Abs(N2));
  if MinN > High(Integer) then MinN := High(Integer);
  for I := 2 to MinN do
    begin
      if (N1 mod I = 0) and (N2 mod I = 0) then
        while (N1 mod I = 0) and (N2 mod I = 0) do
          begin
            N1 := N1 div I;
            N2 := N2 div I;
          end;
      if I mod 10000 = 0 then
        begin
        Info.Caption := 'Сокращение (' + IntToStr(I) + ' из ' + IntToStr(MinN) +
        '). Нажмите Esc для остановки';
        Application.ProcessMessages;
        if ((GetAsyncKeyState(VK_ESCAPE) <> 0) and
        (GetAsyncKeyState(VK_ESCAPE) <> 1)) or not InReducing then
          begin
          InReducing := false;
          Exit;
          end;
        end;
    end;
  InReducing := false;
end;
Сделал, как подсказал Alex Cones! Сейчас просто летает (программа приложена). Сейчас попробую с Евклидом, может еще быстрее будет!
Вложения
Тип файла: rar ZMath.rar (1.42 Мб, 4 просмотров)

Последний раз редактировалось k1r1ch; 15.10.2009 в 12:56.
k1r1ch вне форума Ответить с цитированием
Старый 15.10.2009, 13:51   #22
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию Урааа!

Greblin - супер спасибо!!!
Алгоритм Евклида работает идеально. Вот код:
Код:
function TMainForm.nod(a, b: Int64): Int64;
begin
  while (a <> 0) and (b <> 0) do
    if a >= b then a := a mod b else b:= b mod a;
  nod := a + b;
end;

procedure TMainForm.Reducing(var N1, N2: Int64);
var MinN: Int64;
begin
  repeat
    MinN := nod(Abs(N1), Abs(N2));
    N1 := N1 div MinN;
    N2 := N2 div MinN;
  until MinN > 1;
Вот прога:
Вложения
Тип файла: rar ZMath.rar (1.45 Мб, 5 просмотров)

Последний раз редактировалось k1r1ch; 15.10.2009 в 15:50.
k1r1ch вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Протестируйте программы Umen Софт 13 15.12.2010 00:13
протестируйте пож прогу NSvirus Паскаль, Turbo Pascal, PascalABC.NET 15 12.05.2009 21:04
Протестируйте программку, пожалуйста Air Софт 7 25.07.2008 16:37
Протестируйте пожалуйста terminadoor Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 24.07.2008 14:56
протестируйте программу Gambler Софт 13 04.02.2007 02:48