Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 3

Найти сумму и количество элементов в каждом столбце матрицы, являющихся простыми числами

10.06.2014, 10:49. Показов 2019. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан двумерный массив. Найти сумму и количество элементов в каждом столбце являющихся простыми числами (просьба написать работающую программу)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.06.2014, 10:49
Ответы с готовыми решениями:

Найти сумму и количество элементов в каждом столбце матрицы, являющихся простыми числами
Дан двумерный массив. Найти сумму и количество элементов в каждом столбце являющихся простыми числами.

Найдите сумму и количество элементов в каждом столбце матрицы, являющихся простыми числами
Дан двумерный массив.Найдите сумму и количество элементов в каждом столбце: являющихся простыми числами

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

16
 Аватар для unlucky
37 / 37 / 28
Регистрация: 23.11.2009
Сообщений: 103
10.06.2014, 11:52
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const
  n = 3;
  m = 3;
 
function IsSimplex(AValue: Integer): Boolean;
var
  i: Integer;
begin
  Result := False;
 
  if AValue > 1 then
  begin
    for i := 2 to AValue - 1 do
      if (AValue mod i) = 0 then
        Exit;
 
    Result := True;
  end;
end;
 
var
  i, j, s, count: Integer;
  arr: array [1..n, 1..m] of Integer;
begin
  Randomize;
  for i := 1 to n do
  begin
    s := 0;
    count := 0;
    
    Writeln('Ñòîëáåö - ', i);
    for j := 1 to m do
    begin
      arr[j, i] := Random(100);
      Write(arr[j,i], ' ');
      
      if IsSimplex(arr[j,i]) then
      begin
        Inc(s, arr[j,i]);
        Inc(count);
      end;
    end;
    
    Writeln;
    Writeln('Êîëè÷åñòâî ïðîñòûõ ÷èñåë - ', count);
    Writeln('Èõ ñóììà - ', s);
    Writeln;
  end;
  
  readln;
end.
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
10.06.2014, 13:41
Цитата Сообщение от unlucky Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
function IsSimplex(AValue: Integer): Boolean;
var
 i: Integer;
begin
 Result := False;
 if AValue > 1 then
 begin
    for i := 2 to AValue - 1 do
      if (AValue mod i) = 0 then
       Exit;
  Result := True;
end;
end;
ну вот, беседовали мы с вами о том, что этот код 2-ку неверно считает НЕ ПРОСТЫМ числом, беседовали.
я уже решил, что мы поняли друг друга... а воз и ныне там. функция всё так же ошибочна, как и была...
зато единица и ноль функция будет считать простыми числами, что тоже ошибка!
0
Фрилансер
 Аватар для CodeR
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,603
Записей в блоге: 1
10.06.2014, 13:51
Цитата Сообщение от Sergio Leone Посмотреть сообщение
if AValue > 1 then
Тут как бы условие стоит,так что это не произойдёт
Цитата Сообщение от Sergio Leone Посмотреть сообщение
зато единица и ноль функция будет считать простыми числами, что тоже ошибка!
1
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
10.06.2014, 14:00
ага. насчёт нуля/единицы претензию снимаю (увидел, что Result := True; уже занесено под if ..)

но насчёт двойки ошибка в силе.
0
Фрилансер
 Аватар для CodeR
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,603
Записей в блоге: 1
10.06.2014, 14:06
Цитата Сообщение от Sergio Leone Посмотреть сообщение
но насчёт двойки ошибка в силе
А чем вас 2-ка не устроила?
http://ru.wikipedia.org/wiki/Простое_число
0
 Аватар для unlucky
37 / 37 / 28
Регистрация: 23.11.2009
Сообщений: 103
10.06.2014, 14:08
Цитата Сообщение от Sergio Leone Посмотреть сообщение
но насчёт двойки ошибка в силе.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function IsSimplex(AValue: Integer): Boolean;
var
  i: Integer;
begin
  Result := False;
 
  if AValue > 1 then
  begin
    for i := 2 to AValue div 2 do
      if (AValue mod i) = 0 then 
        Exit;
 
    Result := True;
  end;
end;
Цитата Сообщение от CodeR Посмотреть сообщение
чем вас 2-ка не устроила?
Двойка определялась как не простое число.
0
Фрилансер
 Аватар для CodeR
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,603
Записей в блоге: 1
10.06.2014, 14:09
Цитата Сообщение от unlucky Посмотреть сообщение
Двойка определялась как не простое число.
Хм.Так цикл начинается с 2.Если передать 2,то по сути цикл от 2 до 1,т.е. ни разу не должен выполнится.
0
Модератор
10431 / 5719 / 3404
Регистрация: 17.08.2012
Сообщений: 17,403
10.06.2014, 14:15
Стандартнейшая функция определения простоты числа:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function prime(n: integer): boolean;
var i: integer;
begin
  if n < 2 
    then prime := false
    else begin
      prime := true;
      for i := 2 to trunc(sqrt(n)) do 
        if n mod i = 0
          then begin
            prime := false;
            break
          end
    end
end;
Ни добавить, ни убавить.
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
10.06.2014, 14:15
Цитата Сообщение от CodeR Посмотреть сообщение
Хм.Так цикл начинается с 2.Если передать 2,то по сути цикл от 2 до 1,т.е. ни разу не должен выполнится.
это Вы про код из пост #2 или из пост #7 ?!
0
Фрилансер
 Аватар для CodeR
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,603
Записей в блоге: 1
10.06.2014, 14:17
Цитата Сообщение от Sergio Leone Посмотреть сообщение
это Вы про код из пост #2 или из пост #7 ?!
#2
Там же
Цитата Сообщение от Sergio Leone Посмотреть сообщение
for i := 2 to AValue - 1 do
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
10.06.2014, 14:17
Cyborg Drone, согласен. хороший вариант.
я тут уж на форуме публиковал вариант, который мне больше нравится:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function isPrime(X: LongInt): boolean;
var i: integer;
Begin
     isPrime:=false;
     if x<2 then Exit;
     if not odd(x) and (x<>2) { проверяем на чётность  }
          then exit;
     i:=3;
     while i <= sqrt(x) do { проверяем только нечётные }
     begin
          if x mod i = 0 then Exit;
          inc(i,2);
     end;
     isPrime:=true;
End;
0
 Аватар для unlucky
37 / 37 / 28
Регистрация: 23.11.2009
Сообщений: 103
10.06.2014, 14:17
Цитата Сообщение от CodeR Посмотреть сообщение
Хм.Так цикл начинается с 2.Если передать 2,то по сути цикл от 2 до 1,т.е. ни разу не должен выполнится.
В другом посте я первоначально допустил ошибку в этой функции и она не считала 2-ку за простое число.
Цитата Сообщение от Sergio Leone Посмотреть сообщение
это Вы про код из пост #2 или из пост #7 ?!
В обеих представленных мною функциях всё работает.
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
10.06.2014, 14:22
Цитата Сообщение от CodeR Посмотреть сообщение
#2 Там же
Pascal
1
for i := 2 to AValue - 1 do
приношу свои извинения unlucky!!!
я не прав!!!!

У него верно работающая функция проверки на простоту!

Добавлено через 57 секунд
Цитата Сообщение от unlucky Посмотреть сообщение
В обеих представленных мною функциях всё работает.
Точно так! Извините меня, пожалуйста!
1
Модератор
10431 / 5719 / 3404
Регистрация: 17.08.2012
Сообщений: 17,403
10.06.2014, 14:42
Цитата Сообщение от Sergio Leone Посмотреть сообщение
я тут уж на форуме публиковал вариант, который мне больше нравится
По моему мнению, напрасно он Вам больше нравится. Для цикла while условие выхода из цикла вычисляется при каждой итерации. Для цикла for границы цикла вычисляются только один раз, при вхождении в цикл. Ваш вариант значительно медленнее, чем мой, особенно при больших числах.

Добавлено через 7 минут
Забыл указать, что извлечение корня - весьма медленная операция по сравнению с целочисленными действиями. Получается, что у Вас вычисление корня происходит при каждой итерации, у меня - один раз, а далее в каждой итерации происходит только инкремент счётчика.

К тому же, у Вас проверка i <= sqrt(x), значит, ещё и переменная i неявно приводится к вещественному типу.
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
10.06.2014, 14:57
соласен со всем замечаниями.

Это не вопрос.

тогда такой вариант:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function isPrime(X: LongInt): boolean;
var i, gr : integer;
Begin
     isPrime:=false;
     if x<2 then Exit;
     if not odd(x) and (x<>2) { проверяем на чётность  }
          then exit;
     i:=3;
     gr := trunc(sqrt(x));
     while i <= gr  do { проверяем только нечётные }
     begin
          if x mod i = 0 then Exit;
          inc(i,2);
     end;
     isPrime:=true;
End;

сравните по эффективности со своим вариантом. Ну, скажем, на определении простоты числа 200000000 или (лучше) 200004001
0
Модератор
10431 / 5719 / 3404
Регистрация: 17.08.2012
Сообщений: 17,403
16.06.2014, 00:04
Sergio Leone, этот вариант эффективнее, чем мой. Почти в два раза быстрее. Я думал о таком варианте, но перед праздником не успел отписать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.06.2014, 00:04
Помогаю со студенческими работами здесь

Дан двумерный массив.Найдите сумму и количество элементов в каждом столбце: являющихся простыми числами
Дан двумерный массив.Найдите сумму и количество элементов в каждом столбце: являющихся простыми числами Добавлено через 3 минуты ...

Найти сумму и количество элементов в каждом столбце матрицы, являющихся четными числами
Дан двумерный массив. Найти сумму и количество элементов в каждом столбце, являющихся четными числами. Помогите пожалуйста=(

Получить сумму элементов столбцов матрицы, являющихся простыми числами
нужна помощь в решении задачи(через динамичное выделение памяти) Дана матрица размерности nxm. Получить одномерный массив a, хранящий...

Матрицы. Найти сумму и количество элементов каждого столбца, которые являются простыми числами
Найти сумму и количество элементов с заданным условием (хранить эти значения в массивах): элементы каждого столбца, которые являются...

Найти сумму и количество элементов в каждом столбце матрицы, попадающих в интервал от А до Б
Прошу помочь с задачами... И если вам не трудно, то без сокращений, т.к. массивы не понимаю... Дан двумерный массив. Найти сумму и...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru