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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2019, 13:56   #1
ArcadianMan
Новичок
Джуниор
 
Регистрация: 22.03.2018
Сообщений: 2
Восклицание Перевод программы из Паскаля в Ассемблер

Помогите пожалуйста с решение задачи на ассемблере

Найти n-е простое число, 0<n<30000
ПРимер: 3 -> 5 (1-е простое число – 2, второе – 3, третье – 5)

Код:
Есть рабочая программа на паскале:
program simple;
var
  is_prime: array[1..15485863] of boolean; jj: integer;
 
procedure dosieve(limit: integer);
var
  i, k, x, y: integer; n: integer;
begin
  for i := 5 to limit do
    is_prime[i] := false;
  for x := 1 to trunc(sqrt(limit)) do
    for y := 1 to trunc(sqrt(limit)) do
    begin
      n := 4 * sqr(x) + sqr(y);
      if (n <= limit) and ((n mod 12 = 1) or (n mod 12 = 5)) then
        is_prime[n] := not is_prime[n];
      n := n - sqr(x);
      if (n <= limit) and (n mod 12 = 7) then
        is_prime[n] := not is_prime[n];
      n := n - 2 * sqr(y);
      if (x > y) and (n <= limit) and (n mod 12 = 11) then
        is_prime[n] := not is_prime[n];
    end;
  for i := 5 to trunc(sqrt(limit)) do
  begin
    if is_prime[i] then
    begin
      k := sqr(i);
      n := k;
      while n <= limit do
      begin
        is_prime[n] := false;
        n := n + k;
      end;
    end;
  end;
  is_prime[2] := true;
  is_prime[3] := true;
end;
 
var
  i, n, count: integer;
 
begin
  dosieve(15485863);
  repeat
    write('n = '); readln(n)
  until (n >= 1) and (n <= 30000);
  
  count := 0; i := 0;
  repeat
    inc(i);
    inc(count, ord(is_prime[i]));
  until count = n;
  writeln(i);
end.
______________________
Форматируйте код и используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Вадим Мошев; 13.10.2019 в 16:17.
ArcadianMan вне форума Ответить с цитированием
Старый 13.10.2019, 16:10   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Нет ничего проще.
Откомпилировать паскалевскую прогу, из .exe вытащить нужную часть кода и декомпилировать.
digitalis вне форума Ответить с цитированием
Старый 13.10.2019, 19:03   #3
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Нет ничего проще:
https://godbolt.org/z/ro5XfD
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод программы с Паскаля на С Saniavoznyuk Общие вопросы C/C++ 6 13.11.2014 15:39
Перевод с паскаля на ассемблер Сильф Помощь студентам 1 16.06.2012 19:25
Перевод проги из паскаля в ассемблер .:DEZ:. Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 26 12.06.2012 15:56
Перевод программы с Паскаля на Си macoman99 Помощь студентам 0 24.05.2012 22:55
Перевод программы из Паскаля в Delphi GoldSieg Общие вопросы Delphi 3 26.03.2012 17:09