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

0 голосов
31 просмотров

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


Информатика (299 баллов) | 31 просмотров
0

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.

0

Более быстрый вариант 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.

0

Надо 3 цикла

0

А зачем три цикла? Этот вариант по времени выполнения вполне достаточный 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.

0

Нужно выполнить в 3-х циклах

Дано ответов: 2
0 голосов

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

2. Почти ничего не меня получим код для цикла while:
var
  i, n, k: integer;
begin
  i := 2;
  readln(n);
  while i <= n div 2 do begin<br>    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 i> n div 2;
  writeln('наибольший делитель ', n, ' = ', k);
end.


(13.9k баллов)
0 голосов

Решение в прикрепленном файле в 3-х циклах, но работать эта программа будет медленнее, 
если число N - простое.


Скачать вложение Текст (TXT)
(9.7k баллов)