Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
-4 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 26
1

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

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

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста с программой:составить функцию,проверяющую, является ли заданное натуральное число простым. Выдать элементы массива, являющиеся простыми числами.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2016, 19:32
Ответы с готовыми решениями:

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

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

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

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

8
-4 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 26
18.02.2016, 19:36  [ТС] 2
у меня трудности с программой:составить функцию,проверяющую, является ли заданное натуральное число простым. Выдать элементы массива, являющиеся простыми числами.
0
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
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
Эксперт Pascal/Delphi
6810 / 4567 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
18.02.2016, 21:16 4
Алгоритм, который устанавливает – является ли число простым
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
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
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
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
-4 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 26
19.02.2016, 08:14  [ТС] 7
спасибо, выручили
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
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
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2016, 13:46
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru