Составить программу вывода на экран наивеличайшего делителянатурального числа N, большего 1.3

Составить программку вывода на экран наибольшего делителя
естественного числа N, большего 1.
3 цикла

Задать свой вопрос
Наталья Доничева
var i,n,k: integer; begin write('N = '); readln(n); for i:=2 to n div 2 do if (n mod i) = 0 then k:=i; writeln('наибольший делитель ',n,' = ',k); end.
Владислав Бегутов
Более прыткий вариант var i,n: integer; begin write('N = '); readln(n); for i:=(n div 2) downto 2 do if (n mod i) = 0 then break; writeln('наивеличайший делитель ',n,' = ',i); end.
Коржова Милена
Надобно 3 цикла
Serzh Poshibjakin
А для чего три цикла? Этот вариант по времени выполнения полностью достаточный var i,n: integer; begin write('N = '); readln(n); for i:=2 to round(sqrt(n))+1 do if (n mod i)=0 then break; if i=round(sqrt(n))+1 then writeln('число ',n,' обычное') else writeln('величайший делитель ',n,' = ',(n div i)); end.
Leonid Sladkopevcev
Необходимо выполнить в 3-х циклах
2 ответа
Решение в прикрепленном файле в 3-х циклах, но работать эта программка будет медлительнее, 
если число N - обычное.

1. Для цикла For есть решение выложенное выше  от Srzontmp.

2. Практически ничего не меня получим код для цикла while:
var
  i, n, k: integer;
begin
  i := 2;
  readln(n);
  while i lt;= n div 2 do begin
    if (n mod i) = 0 then k := i;
    i:=i+1;
    end;
  writeln('наибольший делитель ', n, ' = ', k);
end.

3. Аналогично для цикла Repeat:
var
  i, n, k: integer;
begin
  i := 2;
  readln(n);
  repeat
    if (n mod i) = 0 then k := i;
    i:=i+1;
  until igt; n div 2;
  writeln('наивеличайший делитель ', n, ' = ', k);
end.


, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт