3 / 3 / 0
Регистрация: 14.04.2014
Сообщений: 43
1

Есть ли в матрице столбец, содержащий хотя бы два взаимно простых числа?

14.10.2014, 21:02. Показов 2192. Ответов 24

Есть ли в матрице столбец, содержащий хотя бы два взаимно простых числа?
С двумерным массивом
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2014, 21:02
Ответы с готовыми решениями:

Определить, есть ли в матрице столбец, содержащий хотя бы два взаимно простых числа
//Åñòü ëè â ìàòðèöå ñòîëáåö, ñîäåðæàùèé õîòÿ áû äâà âçàèìíî ïðîñòûõ ÷èñëà? uses crt; const n=4;...

Есть ли в целочисленной матрице хотя бы один столбец, содержащий элемент, кратный 13
Проверить, есть ли в целочисленной матрице C(n1×n2) хотя бы один столбец, содержащий элемент,...

Проверить, есть ли в матрице хотя бы один столбец, содержащий элемент, равный нулю, и найти его номер
1)Проверить, есть ли в матрице хотя бы один столбец, содержащий элемент, равный нулю, и найти его...

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

24
55 / 56 / 37
Регистрация: 06.02.2013
Сообщений: 256
Записей в блоге: 1
15.10.2014, 11:42 2
Anastasia96, а объясните какое это взаимно простое число?
0
3 / 3 / 0
Регистрация: 14.04.2014
Сообщений: 43
15.10.2014, 12:29  [ТС] 3
Константин_2012, то есть 2 числа простые в одном столбце вмсете
простые это которые деляться на себя и на 1у
0
906 / 754 / 833
Регистрация: 06.09.2013
Сообщений: 1,561
15.10.2014, 12:38 4
Цитата Сообщение от Константин_2012 Посмотреть сообщение
объясните какое это взаимно простое число?
Это числа, которые не имеют общих делителей, кроме 1
1
55 / 56 / 37
Регистрация: 06.02.2013
Сообщений: 256
Записей в блоге: 1
15.10.2014, 14:12 5
Anastasia96, вот
C++
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
52
53
54
55
#include <iostream>
using namespace std;
bool prost(int n)
{
    if (n==1)
        return false;
    for (int d=2; d*d<=n; d++)
    {
        if (n%d==0)
            return false;
    }
    return true;
}
int main()
{
    setlocale(0,"Rus");
    int n, count=0;
    srand(time(NULL));
    // Проверка на ввод положительного числа
    do 
    {
        system("cls");
        cout<<"Введите размер матрицы: ";
        cin>>n;
    } while (n<=0);
    cout<<"Матрица:\n"<<endl;;
    int **mas= new int* [n];
    for (int i=0; i<n; i++)
        mas[i]=new int[n];   
    // Заполнение матрицы случайными числами от 0 до 99 
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++) 
        {
            mas[i][j]= rand() %99;
            cout<<mas[i][j]<<"\t";
        }
        cout<<endl;
    }
    cout<<endl;
    // Поиск простых чисел в столбцах
    for (int j=0; j<n; j++) 
    {
        for (int i=0; i<n; i++) 
            count+=prost(mas[i][j]);
        if (count>=2) cout<<"Столбец №"<<j+1<<" содержит "<<count<<" простых чисел!"<<endl;
        count=0;
    }
    cout<<endl;
    // Удаление двумерного массива
    for (int i=0; i<n; i++)
        delete []mas[i];
    system("pause");
    return 0;
}
1
906 / 754 / 833
Регистрация: 06.09.2013
Сообщений: 1,561
15.10.2014, 16:37 6
Константин_2012, здесь раздел Pascal, а не С++. Да и в школах не изучают C++.
1
55 / 56 / 37
Регистрация: 06.02.2013
Сообщений: 256
Записей в блоге: 1
15.10.2014, 23:11 7
erl27, извиняюсь, просто бегаю, то в паскаль, то в С++, видимо упустил. Переделаю позже под Pascal, а то на работе сейчас завал

Добавлено через 5 часов 47 минут
паскаль - говно язык, я уже половину в нём и не помню... может кто помнит, тот и переведет
1
0 / 0 / 1
Регистрация: 14.10.2014
Сообщений: 76
15.10.2014, 23:49 8
Константин_2012,
я вот попробовал написать, тока где есть ошибка
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
uses crt;
const n=4;
var a:array[1..n,1..n] of integer;
    i,j,k,jp,b:integer;
begin
writeln('Èñõîäíàÿ ìàòðèöà');
for i:=1 to n do
 begin
 for j:=1 to n do
 begin
 a[i,j]:=random(20)+1;
 write(a[i,j]:4);
 end;
 writeln;
 end;
 writeln('Íîìåð ñòîëáöà â êîòîðîì äâà âçàèìíî ïðîñòûõ ÷èñëà  ');
for j:=1 to n do
  begin
  k:=0;
  b:=0;
  for i:=1 to n do
  if a[i,j]>3 then
  begin
  if (not(int(a[i,j]/2)=a[i,j]/2)) or (not(int(a[i,j]/3)=a[i,j]/3)) then
  jp:=i;
  k:=k+1
  end;
  if k>=2 then b:=b+1;
  begin
  if b=1 then
  write('  ',j);
  end;
  if b=0 then writeln('òàêèõ ñòîëáöîâ íåò');
  end;
  end.
Добавлено через 1 минуту
erl27, не могли бы вы помочь найти ошибку у меня тож похожая задача
0
55 / 56 / 37
Регистрация: 06.02.2013
Сообщений: 256
Записей в блоге: 1
16.10.2014, 00:21 9
_tolik_, сейчас посмотрю
2
0 / 0 / 1
Регистрация: 14.10.2014
Сообщений: 76
16.10.2014, 00:35 10
Константин_2012,
я тут немного нашёл ошибок только теперь показывает если есть в 4ом
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
uses crt;
const n=4;
var a:array[1..n,1..n] of integer;
    i,j,k,b:integer;
begin
randomize;
writeln('Èñõîäíàÿ ìàòðèöà');
for i:=1 to n do
 begin
 for j:=1 to n do
 begin
 a[i,j]:=random(20)+1;
 write(a[i,j]:4);
 end;
 writeln;
 end;
 writeln('Íîìåð ñòîëáöà â êîòîðîì äâà âçàèìíî ïðîñòûõ ÷èñëà  ');
for j:=1 to n do
  begin
k:=0;
  for i:=1 to n do
  if (a[i,j]=1) or (a[i,j]=2) or (a[i,j]=3) then k:=k+1;
  if a[i,j]>3 then
  begin
  if (not(int(a[i,j]/2)=a[i,j]/2)) or (not(int(a[i,j]/3)=a[i,j]/3)) then
  k:=k+1;
  end;
  end;
  b:=0;
  if k>=2 then b:=1;
  begin
  if b=1 then
  writeln('  ',j);
  end;
  writeln;
  if b=0 then writeln('òàêèõ ñòîëáöîâ íåò');
  end.
Нужно как то написать чтобы во всех ячейках проверялось
надо впихнуть строчку типа токого abs(a-b)=1
0
55 / 56 / 37
Регистрация: 06.02.2013
Сообщений: 256
Записей в блоге: 1
16.10.2014, 01:16 11
_tolik_, проще в процедуру или функцию проверку запихнуть...
1
0 / 0 / 1
Регистрация: 14.10.2014
Сообщений: 76
16.10.2014, 01:22 12
Константин_2012, так да тока как это реализовать кодом, как надумаю скину вариант
0
55 / 56 / 37
Регистрация: 06.02.2013
Сообщений: 256
Записей в блоге: 1
16.10.2014, 02:07 13
Лучший ответ Сообщение было отмечено Anastasia96 как решение

Решение

Anastasia96, _tolik_, Вот
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
52
53
program mas1;
uses crt;
const
  nmax=100;
var
  mas: array[1..nmax,1..nmax] of integer;
  n,i,j,count: integer;
function prost(n:integer):integer;
label ex;
var d,c:integer;
begin
   c:=4;
   if n=1 then
   begin
      prost:=0;
      goto ex;
   end;
   d:=2;
   while c<=n do begin
      if n mod d=0 then
      begin
         prost:=0;
         goto ex;
      end;
      d:=d+1;
      c:=d*d;
   end;
   prost:=1;
ex:
end;
begin
  randomize;
  write('Ââåäèòå ðàçìåð ìàòðèöû n: ');
  readln(n);
  writeln('Ìàòðèöà:');
  for i:=1 to n do
  begin
    for j:=1 to n do
    begin
      mas[i,j]:=random(99);
      write(mas[i,j]:5);
    end;
    writeln;
  end;
  count:=0;
  for j:=1 to n do
  begin
     for i:=1 to n do
        count:=count+prost(mas[i,j]);
     if count>=2 then writeln('Ñòîëáåö ¹',j:2,' ñîäåðæèò ',count:2,' ïðîñòûõ ÷èñåë!');
     count:=0;
  end;
end.
2
0 / 0 / 1
Регистрация: 14.10.2014
Сообщений: 76
17.10.2014, 00:36 14
Константин_2012,
Константин а не могли бы вы упростить данную программу плз
мы метки ещё не проходили

Добавлено через 5 минут
можно ли метки заменить каким-нибудь другим способом
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7082 / 4206 / 2733
Регистрация: 22.11.2013
Сообщений: 12,064
Записей в блоге: 1
17.10.2014, 12:07 15
Цитата Сообщение от Константин_2012 Посмотреть сообщение
паскаль - говно язык, я уже половину в нём и не помню... может кто помнит, тот и переведет
Паскаль -- шикарный язык:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const m=5; n=5; LIM=100; W=4;
function GCD(a, b: Integer): Integer;
begin
  while (a<>0) and (b<>0) do if a>b then a:=a mod b else b:=b mod a;
  GCD:=a+b;
end;
var
  a: array [1..m,1..n] of Integer;
  i, j, k: Integer;
begin
  Randomize; WriteLn('Исходная матрица: ');
  for i:=1 to m do begin
    for j:=1 to n do begin
      a[i,j]:=Random(LIM); Write(a[i,j]:W);
    end; WriteLn;
  end;
  for j:=1 to n do for i:=1 to m-1 do for k:=i+1 to m do
    if GCD(a[i,j],a[k,j])=1 then begin
      WriteLn('В столбце ',j,' взаимно простые: ',a[i,j],' и ',a[k,j]); Exit;
    end;
  WriteLn('Столбцов с взаимно простыми числами нет.');
end.
А вот предложенная вами портянка на сколь-угодно замечательном C++ поставленную задачу поиска столбца с взаимно-простыми числами не решает от слова совсем.

Добавлено через 29 минут
Думаете эквивалент на "плюсах" легче читается? Сравните:
C++
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
#include <stdlib.h>
#include <iostream>
#include <iomanip>
 
using namespace std;
 
const int m=5, n=5, LIM=100, W=4;
 
int GCD(int a, int b) {
    while (a!=0 && b!=0) if (a>b) a=a%b; else b=b%a;
    return a+b;
}
 
int main(void) {
    int a[m][n];
    setlocale(LC_ALL,"ru");
    srand(time(NULL));
    cout << "Исходная матрица:" << endl;
    for (int i=0; i<m; i++) {
        for (int j=0; j<n; j++) {
            a[i][j]=rand()%LIM;
            cout << setw(W) << a[i][j];
        } cout << endl;
    }
    for (int j=0; j<n; j++) for (int i=0; i<m-1; i++) for (int k=i+1; k<m; k++)
        if (GCD(a[i][j],a[k][j])==1) {
            cout << "В столбце " << j << " взаимно простые: "
                 << a[i][j] << " и " << a[k][j] << endl;
            return 0;
        };
    cout << "Столбцов с взаимно простыми числами нет." << endl;
    return 0;
}
1
55 / 56 / 37
Регистрация: 06.02.2013
Сообщений: 256
Записей в блоге: 1
17.10.2014, 15:35 16
_tolik_, а как вы хотите, чтобы я её упростил?

Добавлено через 2 минуты
bormant, ну, если учитывать, что я в паскале работал только в школе и пол года института, а это было 5 лет назад (забывал уже всё). А С++ мне нравится тем, что там и циклы (для меня, моё мнение) получше сделаны и проще в понимании
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7082 / 4206 / 2733
Регистрация: 22.11.2013
Сообщений: 12,064
Записей в блоге: 1
17.10.2014, 15:55 17
Цитата Сообщение от Константин_2012 Посмотреть сообщение
там и циклы (для меня, моё мнение) получше сделаны
Напишите с ходу аналог
Pascal
1
2
3
4
var
  i: Word; { 16-битное беззнакоавое целое, 0..65535 }
...
  for i:=0 to 65535 do ;
Ни одна из использованных возможностей C++ (как в отличие от Си, так и от Паскаль) не является незаменимой, увы, говорить что пример на С++ можно с очень большой натяжкой и только из-за cout, от которого избавиться не просто легко, а очень легко.

А вот алгоритм, от которого в первую очередь зависит результат, и выбран не верно, и реализован с помарками.
1
55 / 56 / 37
Регистрация: 06.02.2013
Сообщений: 256
Записей в блоге: 1
17.10.2014, 16:37 18
bormant, честно сказать, то я и заморачиваться не особо горю желанием) я написал своё мнение и, скажу сразу, что я не профи, что в паскале, что в С++
1
Sergio Leone
17.10.2014, 20:58
  #19

Не по теме:

Цитата Сообщение от Константин_2012 Посмотреть сообщение
я написал своё мнение и, скажу сразу, что я не профи, что в паскале, что в С++
и, судя по всем, и в математике тоже.

Вы никак не поймёте, что Вы многократно писали код по проверки числа на простоту.
А в данной задаче нужно найти не простые числа, а ВЗАИМНО простые.
чем они отличаются сказано было erl27 в пост #4
Вы мало того, что пропустили это объяснение, но и упорно пытались "втюхать" новичку свой неверный код.
Некрасиво! :(

извините, что не сдержался...

0
55 / 56 / 37
Регистрация: 06.02.2013
Сообщений: 256
Записей в блоге: 1
17.10.2014, 23:27 20
Sergio Leone, Да вы что, а вы хотите сказать, что моя программа не правильна??? Ану ка приведите пример взаимно простого числа. Как мне объяснили - так и написал (3, 5, 7, 11, 13, 17, 19, 23 - эти числа взаимно простые, по объяснению). А на счёт математики вы не правы! Математику я знал хорошо, а вот то, что забыл многое, то не спорю.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2014, 23:27
Помогаю со студенческими работами здесь

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

Определить, есть ли в матрице столбец, содержащий минимальный и максимальный элементы матрицы
Дан двумерный массив размерностью n × m, заполненный случайными числами. Определить, существует ли...

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

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

Определить, есть ли в строке(string) хотя бы одно число и определить есть ли в тексте хотя бы два числа.
Помогите пожалуйста с заданиями. Определить, есть ли в строке(string) хотя бы одно число....

Найти два наибольших простых числа в матрице
Помогите,пожалуйста Задана матрица целых чисел A(m,n). Найти два наибольших простых числа....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru