Другие языки программирования и технологии
вопрос по паскалю абс
Дан массив из N чисел в интервале от -32000 до 32000. (1<=N<=1000). Удалить из массива все простые числа и вывести его содержимое. Ввести в первой строке одно число N. Во второй строке через один или несколько пробелов расположены N числа. Вывести в одной строке через один пробел массив после удаления из него простых чисел. Для проверки: входные данные 8 1 2 3 4 5 6 7 8 выходные данные 468 Помогите пожалуйста целое решение, в долгу не останусь!!
Попробуй - расплатись!
С заполнением массива я не понял.. . Заполнил как смог.
Можешь сам сделать заполнение через Random
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var
M : array [1..1000] of smallint;
Index, N : smallint;
procedure Udalit(P : smallint);
begin
for var Pos := P to N - 1 do
M[Pos] := M[Pos + 1];
N := N - 1;
end;
function Delimost(P : smallint) : Boolean;
var
V : Integer;
Q : Real;
begin
// Предположим, что простое
Result := True;
// самые простые
if M[P] = 1 then Exit;
if M[P] = 2 then Exit;
if M[P] = 3 then Exit;
if M[P] = 5 then Exit;
// Предположим, что составное
Result := False;
if M[P] mod 2 = 0 then Exit;
if M[P] mod 3 = 0 then Exit;
if M[P] mod 5 = 0 then Exit;
// Будем пробовать делить на все нечётные числа, начиная с 7
Q := Sqrt(M[P]);
V := 7;
while V <= Q do
begin
if M[P] mod V = 0 then Exit; // Делится без остатка - составное
V := V + 2;
end;
// Оказалось простое
Result := True;
end;
begin
Write('Введите N = '); ReadLn(N);
// Заполним массив
for Index := 1 to N do
begin
M[Index] := Index;
Write(M[Index], ' ');
end;
WriteLn();
// Отсеим простые
Index := 1;
while Index <= N do
begin
if Delimost(Index) then
Udalit(Index)
else
Index := Index + 1;
end;
// Выводим результат
for Index := 1 to N do
Write(M[Index], ' ');
WriteLn();
end.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Введите N = 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
4 6 8 9 10 12 14 15 16 18 20
С заполнением массива я не понял.. . Заполнил как смог.
Можешь сам сделать заполнение через Random
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var
M : array [1..1000] of smallint;
Index, N : smallint;
procedure Udalit(P : smallint);
begin
for var Pos := P to N - 1 do
M[Pos] := M[Pos + 1];
N := N - 1;
end;
function Delimost(P : smallint) : Boolean;
var
V : Integer;
Q : Real;
begin
// Предположим, что простое
Result := True;
// самые простые
if M[P] = 1 then Exit;
if M[P] = 2 then Exit;
if M[P] = 3 then Exit;
if M[P] = 5 then Exit;
// Предположим, что составное
Result := False;
if M[P] mod 2 = 0 then Exit;
if M[P] mod 3 = 0 then Exit;
if M[P] mod 5 = 0 then Exit;
// Будем пробовать делить на все нечётные числа, начиная с 7
Q := Sqrt(M[P]);
V := 7;
while V <= Q do
begin
if M[P] mod V = 0 then Exit; // Делится без остатка - составное
V := V + 2;
end;
// Оказалось простое
Result := True;
end;
begin
Write('Введите N = '); ReadLn(N);
// Заполним массив
for Index := 1 to N do
begin
M[Index] := Index;
Write(M[Index], ' ');
end;
WriteLn();
// Отсеим простые
Index := 1;
while Index <= N do
begin
if Delimost(Index) then
Udalit(Index)
else
Index := Index + 1;
end;
// Выводим результат
for Index := 1 to N do
Write(M[Index], ' ');
WriteLn();
end.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Введите N = 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
4 6 8 9 10 12 14 15 16 18 20
Похожие вопросы
- Паскаль АБС - это тот же паскаль?
- Помогите с задачей в паскале абс
- Модуль 'math' не найден Паскаль АБС подключаю модуль math а его не находит и програма не компилируется что делать?
- Программа в паскале АБС
- Ребят помогите дописать прогу в паскале абс
- Как написать программу в Паскаль АБС срочно
- Вопрос по паскалю и его применению.
- Нубские вопросы по паскалю. *)
- Вопросы про паскаль
- Вопрос по паскалю