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:
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!