Дано натуральное число n. Получить все натуральные числа, меньшие n и взаимно простые с ним — Pascal(Паскаль)

var
  i,n:integer;

function nod(x,y:Integer):Integer;
begin
  if x = 0 then
    nod:=y
  else
    nod:=nod(y mod x,x)
end;

begin
  readln(n);
  writeln('------------ ',n);
  for i:=n downto 1 do
    if nod(n,i)=1 then
      write(i,' ')
end.

Вариант 2

uses crt;
var n,i:word;
function NOD(m,n:integer):integer;{нахождение наибольшего общего делителя}
begin
while m<>n do
if m>n then m:=m-n else n:=n-m;
NOD:=m;
end;
begin
clrscr;
write('n=');readln(n);
for i:=2 to n-1 do
if NOD(n,i)=1 then write(i,' ');{если НОД=1, взаимно простые}
readln
end.

Вариант 3

uses crt;
var n,i,m,k:word;
begin
clrscr;
write('n=');readln(n);
for i:=2 to n-1 do
 begin
  m:=n;k:=i;
  while k<>m do
  if k>m then k:=k-m else m:=m-k;
  if (k=1)or(m=1) then write(i,' ');
 end;
readln
end.

Вариант 4

uses crt;
var n,i,m,k:word;
begin
clrscr;
write('n=');readln(n);
for i:=2 to n-1 do
 begin
  m:=n;k:=i;
  while k<>m do
  if k>m then k:=k-m else m:=m-k;
  if (k=1)or(m=1) then write(i,' ');
 end;
readln
end.

Вариант 5

var
n,i,j,f:integer;
begin
write('n=');
readln(n);
for i:=2 to n-1 do
 begin
   f:=0;
   for j:=2 to n div 2  do
      if  (n mod j=0)and( i mod j=0) then f:=1;
   if f=0 then write(i,' ');
  end;
  end.

Leave a Comment

16 + = 25