При этом каждый множитель должен быть напечатан столько раз, сколько раз он встречается в разложении. Формат входных данных
Входной файл содержит натуральное число n (2≤n≤104).
Формат выходных данных
Выведите через пробел все простые делители числа n в порядке возрастания.
Другие языки программирования и технологии
Требуется напечатать разложение заданного числа n на простые множители.
var n, i:integer;
begin
{создание входного файла с числом наугад}
assign(output,'input.txt');
rewrite(output);
n:=2 + random (9999); {104 = 10 в степени 4}
writeln (output, n);
close (output);
{чтение данных из файла}
assign(input,'input.txt');
reset(input);
readln (n);
close(input);
i:=1;
while n > 1 do
begin
inc(i);
while n mod i = 0 do
begin
write (i,' ');
n:= n div i;
end;
end;
end.
begin
{создание входного файла с числом наугад}
assign(output,'input.txt');
rewrite(output);
n:=2 + random (9999); {104 = 10 в степени 4}
writeln (output, n);
close (output);
{чтение данных из файла}
assign(input,'input.txt');
reset(input);
readln (n);
close(input);
i:=1;
while n > 1 do
begin
inc(i);
while n mod i = 0 do
begin
write (i,' ');
n:= n div i;
end;
end;
end.
type
tSpis = ^rSpis;
rSpis = record
N, K : Integer;
Next : tSpis;
end;
var
N0, N, D : Integer;
First, Last, Cur : tSpis;
procedure AddSpis(N : Integer);
begin
Cur := First;
while (Cur <> nil) and (Cur^.N <> N) do
Cur := Cur^.Next;
if Cur = nil then
begin
New(Cur);
Cur^.N := N;
Cur^.K := 1;
Cur^.Next := nil;
if First = nil then
First := Cur
else
Last^.Next := Cur;
Last := Cur;
end
else
Inc(Cur^.K);
end;
procedure OutSpis;
begin
Cur := First;
repeat
Write(Cur^.N);
if Cur^.K > 1 then Write('^', Cur^.K);
Cur := Cur^.Next;
if Cur <> nil then Write(' x ');
until Cur = nil;
end;
begin
Write('Введите N = '); ReadLn(N0);
N := N0;
First := nil;
while not Odd(N) do
begin
AddSpis(2);
N := N shr 1;
end;
D := 3;
while D*D < N do
if N mod D = 0 then
begin
AddSpis(D);
N := N div D;
end
else
Inc(D, 2);
if D*D > N then
AddSpis(N);
if First <> Last then
begin
Write('Число ', N0, ' можно разложить на простые множители: ');
OutSpis;
WriteLn;
end
else
WriteLn('Число ', N0, ' простое.');
end.
tSpis = ^rSpis;
rSpis = record
N, K : Integer;
Next : tSpis;
end;
var
N0, N, D : Integer;
First, Last, Cur : tSpis;
procedure AddSpis(N : Integer);
begin
Cur := First;
while (Cur <> nil) and (Cur^.N <> N) do
Cur := Cur^.Next;
if Cur = nil then
begin
New(Cur);
Cur^.N := N;
Cur^.K := 1;
Cur^.Next := nil;
if First = nil then
First := Cur
else
Last^.Next := Cur;
Last := Cur;
end
else
Inc(Cur^.K);
end;
procedure OutSpis;
begin
Cur := First;
repeat
Write(Cur^.N);
if Cur^.K > 1 then Write('^', Cur^.K);
Cur := Cur^.Next;
if Cur <> nil then Write(' x ');
until Cur = nil;
end;
begin
Write('Введите N = '); ReadLn(N0);
N := N0;
First := nil;
while not Odd(N) do
begin
AddSpis(2);
N := N shr 1;
end;
D := 3;
while D*D < N do
if N mod D = 0 then
begin
AddSpis(D);
N := N div D;
end
else
Inc(D, 2);
if D*D > N then
AddSpis(N);
if First <> Last then
begin
Write('Число ', N0, ' можно разложить на простые множители: ');
OutSpis;
WriteLn;
end
else
WriteLn('Число ', N0, ' простое.');
end.
посмотри эту прогу
uses crt; // Получить все простые делители
Var n, i,j: integer;
g:boolean;
Begin;
Readln(n);
For i := 1 to n do begin
If (n mod i = 0) then begin
g := true;
for j := 2 to i-1 do g := g and (i mod j <> 0);
if g then write (i,' ');
end;
end;
End.
uses crt; // Получить все простые делители
Var n, i,j: integer;
g:boolean;
Begin;
Readln(n);
For i := 1 to n do begin
If (n mod i = 0) then begin
g := true;
for j := 2 to i-1 do g := g and (i mod j <> 0);
if g then write (i,' ');
end;
end;
End.
Похожие вопросы
- 1.Найти количество двоек в разложении натурального числа М на простые множители.
- Найти все натуральные числа, не превосходящие заданного числа n, которые делятся на каждую из своих цифр. Паскаль.
- Помогите найти алгоритм подбора множителей к числам заданного массива, сумма произведений которых равна заданному числу
- Дан линейный массив чисел N. N вводит пользователь. Вывести все простые числа массива.
- как решить через abc pascal задачу "Дано натуральное число n. Получить все простые делители этого числа"
- Найти число Фибоначчи, ближайшее к заданному натуральному числу N. (программирование в языке Си)
- Даны натуральные числа N и A1,…, AN. Образовать новые одномерные последовательности B1, …, BN и C1, …, CN
- Вводится число N, а затем N чисел. Подсчитайте, сколько среди данных N чисел нулей.
- Паскаль. Представить натуральное число n в виде суммы трёх квадратов натуральных чисел.
- Дано натуральное число N. Напечатать все его делители.