Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Forb7
-4 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 26
1

Выдать элементы массива, являющиеся простыми числами

18.02.2016, 19:32. Просмотров 964. Ответов 8
Метки нет (Все метки)

Помогите пожалуйста с программой:составить функцию,проверяющую, является ли заданное натуральное число простым. Выдать элементы массива, являющиеся простыми числами.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2016, 19:32
Ответы с готовыми решениями:

Удалить все элементы массива, являющиеся числами Фибоначчи
1.Дан массив A из N элементов (натуральные числа), удалить все элементы являющимися числами...

Найти элементы одномерного массива из N элементов, являющиеся простыми числами
В целочисленном одномерном массиве из N(N\geq 50)элементов есть только один нулевой.Вывести на...

Из заданного массива удалить уникальные (не повторяющиеся) элементы, являющиеся совершенными числами
Написать программу. Дан одномерный массив А. Из этого массива удалить уникальные ( не...

Вывести все элементы последовательности, являющиеся трехзначными числами, кратными семи
Напишите программу обработки последовательности целых чисел. На вход программе сначала подается...

Создать массив, элементы которого являются простыми числами и расположены до минимального элемента в файле
задача: Взяв за основу файл целых чисел, создать массив, элементы которого являются простыми...

8
Forb7
-4 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 26
18.02.2016, 19:36  [ТС] 2
у меня трудности с программой:составить функцию,проверяющую, является ли заданное натуральное число простым. Выдать элементы массива, являющиеся простыми числами.
0
Joy
Эксперт Pascal/Delphi
2220 / 1232 / 1454
Регистрация: 29.08.2014
Сообщений: 4,491
18.02.2016, 19:53 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
uses Arrays;
function ispr(n:integer):boolean;
begin
  Result:=false;
  if n<2 then exit;
  for i:integer:=2 to round(sqrt(abs(n))) do 
    if n mod i=0 then exit;
  Result:=true;
end;
begin
  var a:=CreateRandomIntegerArray(20);
  writeln(a);
  writeln(a.Where(ispr));
end.
0
ZX Spectrum-128
Модератор
Эксперт Pascal/Delphi
4762 / 3408 / 4013
Регистрация: 05.06.2014
Сообщений: 17,018
18.02.2016, 21:16 4
Алгоритм, который устанавливает – является ли число простым
0
18.02.2016, 21:16
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
27445 / 18375 / 7273
Регистрация: 22.10.2011
Сообщений: 32,335
Записей в блоге: 6
18.02.2016, 23:11 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Насколько я понимаю, вот это:
Pascal
1
2
3
4
5
6
uses Arrays, System.Linq;
begin
  var a:=CreateRandomIntegerArray(20);
  writeln(a);
  writeln(a.Where(v -> (v > 1) and Enumerable.Range(2, Trunc(Sqrt(v)) - 1).All(t -> v mod t <> 0)));
end.
будет выдавать те же результаты. "Так зачем писать больше?" (С)

При особом желании можно вынести определение простоты и в функцию:
Pascal
1
2
3
4
5
6
7
8
9
uses Arrays, System.Linq;
function isPrime(v : integer) : boolean :=
  (v > 1) and Enumerable.Range(2, Trunc(Sqrt(v)) - 1).All(t -> v mod t <> 0);
  
begin
  var a:=CreateRandomIntegerArray(20);
  writeln(a);
  writeln(a.Where(isPrime));
end.
0
Joy
Эксперт Pascal/Delphi
2220 / 1232 / 1454
Регистрация: 29.08.2014
Сообщений: 4,491
19.02.2016, 06:10 6
volvo, полностью согласен, но почему работает медленнее?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses Arrays, System.Linq;
function isPrime(v : integer) : boolean :=
  (v > 1) and Enumerable.Range(2, Trunc(Sqrt(v)) - 1).all(t -> v mod t <> 0);
function ispr(n:integer):boolean;
begin
  Result:=false;
  if n<2 then exit;
  for i:integer:=2 to round(sqrt(abs(n))) do 
    if n mod i=0 then exit;
  Result:=true;
end;
begin
  var a:=range(1,2000000).Select(i->random(10000000)).ToArray();
  writeln(System.DateTime.Now);
  writeln(a.Where(ispr).Count());
  writeln(System.DateTime.Now);  
  writeln(a.Where(isPrime).Count());  
  writeln(System.DateTime.Now);
end.
вывод:
Код
19.02.2016 9:08:57
132660
19.02.2016 9:09:01
132660
19.02.2016 9:09:10
0
Forb7
-4 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 26
19.02.2016, 08:14  [ТС] 7
спасибо, выручили
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
27445 / 18375 / 7273
Регистрация: 22.10.2011
Сообщений: 32,335
Записей в блоге: 6
19.02.2016, 10:55 8
Странно, у меня разрыв по времени гораздо меньше,
19.02.2016 9:52:30
133001
19.02.2016 9:52:34
133001
19.02.2016 9:52:39
, всего на 1 секунду разница.
0
Joy
Эксперт Pascal/Delphi
2220 / 1232 / 1454
Регистрация: 29.08.2014
Сообщений: 4,491
19.02.2016, 13:46 9
похоже .Net оптимизирован на более мощное железо, нежели древний ноут Asus Intel Core 2 Duo T7300 2.0 GHz с 1.5 Gb Ram и Windows Vista 32 бита. Вопрос с производительностью снимается.
0
19.02.2016, 13:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2016, 13:46

Сформировать новый массив, содержащий все элементы исходного массива, являющиеся палиндромами
Сформировать новый массив, содержащий все элементы исходного массива, являющиеся палиндромами.(ввод...

Упорядочить по возрастанию модулей элементы целочисленного массива, расположенные между третьим и пятым простыми числам
Упорядочить по возрастанию модулей элементы целочисленного массива, расположенные между третьим и...

Определить все ли элементы массива различны и выдать соответствующее сообщение на экран.
Определить все ли элементы массива различны и выдать соответствующее сообщение на экран.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru