👤

Se citeștede la tastatură o variabilă întreagă n, reprezentând numărul de linii și de coloane ale unei matrici pătratice a. Se cere să se genereze matricea a, prin popularea ei cu primele n * n numere prime. Să se afișeze matricea rezultată. Problema rezolvata in limbajul C

Răspuns :

#include <stdio.h>

#include <stdlib.h>

int main()

{

int n, m = 3;

printf("Dati n: ");

scanf("%d", &n);

int* nr = (int*)malloc(n * n * sizeof(int)); //se aloca memorie pentru numerele prime

int* arr = (int*)malloc(n * n * sizeof(int)); //se aloca memorie pentru matrice

nr[0] = 2; //primul numar prim este 2

//se genereaza primele n*n numere prime

for (int i = 1; i < n * n; i++)

{

 while (1)

 {

  if (isPrime(m) == 1)

  {

   nr[i] = m;

   m += 2;

   break;

  }

  else

   m += 2;

 }

}

m = 0;

//se construieste matricea

for (int i = 0; i < n; i++)

 for (int j = 0; j < n; j++)

 {

  *(arr + i * n + j) = nr[m];

  m++;

 }

free(nr);

//se printeaza matricea

printf("\nMatricea este:\n");

for (int i = 0; i < n; i++) {

 for (int j = 0; j < n; j++) {

  printf("%d ", *(arr + i * n + j));

 }

 printf("\n");

}

free(arr);

getch();

return 0;

}

int isPrime(int a)

{

for (int i = 3; i * i <= a; i += 2)

 if (a % i == 0)

  return 0;

return 1;

}

#include <stdio.h>

int main()

{

   int n, i=1, j, p, c=0, v=0, sum=0;

   

   printf("Dati n:");

   scanf("%d", &n);

   int a[n][n];

   for(sum=0;sum<(n*n);sum++){

   

      p=1;

      j=2;

      while(j<=i/2){

          if(i % j == 0){

              p=0;

              break;

          }

          j++;

      }

     

      if(p==1){

          if(c<n){

          a[v][c]=i;

          c++;

          } else {

              c=0;

              v++;

              a[v][c]=i;

              c++;

           }

      } else{

          sum--;

      }

       if(i<=n*n){

           i++;

       } else i=1;

   

   }

 

for(i=0; i<n; i++){

   printf("\n");

   for(j=0; j<n; j++){

       printf("%d ", a[i][j]);

   }

}

   return 0;

}

Rezultat:

Vezi imaginea HOWARDAX
Vă mulțumim că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Dacă aveți întrebări sau nevoie de asistență suplimentară, nu ezitați să ne contactați. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!


En Learnings: Alte intrebari