How to fill a matrix with prime numbers in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>

bool is_prime(int n) {
    if (n == 1 || n == 0) {
        return false;
    }
    
    for (int i = 2; i <= sqrt(n); i++) {
        if (n % i == 0) {
            return false;
        }
    }
    
    return true;
}

void generate_prime_numbers(int size, int prime_numbers_array[]) {
    int i = 0;
    int num = 2;
    
    while (i < size) {
        if (is_prime(num)) {
            prime_numbers_array[i] = num;
            i++;
        }
        num++;
    }
}

void fill_matrix_with_prime_number(int rows, int cols, int matrix[][cols]) {
    int size = rows * cols;
    
    int *prime_numbers_array = malloc(size * sizeof(int));
    if (prime_numbers_array == NULL) {
        fprintf(stderr, "Memory allocation failed\n");
        exit(EXIT_FAILURE);
    }
    
    generate_prime_numbers(size, prime_numbers_array);
    
    int index = 0;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            matrix[i][j] = prime_numbers_array[index];
            index++;
        }
    }
    
    free(prime_numbers_array);
}

int main() {
    int rows = 4, cols = 5;
    int matrix[4][5];
    
    fill_matrix_with_prime_number(rows, cols, matrix);

    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("%3d ", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}




/*
run:

  2   3   5   7  11 
 13  17  19  23  29 
 31  37  41  43  47 
 53  59  61  67  71 

*/

 



answered Feb 17, 2024 by avibootz
edited Feb 17, 2024 by avibootz

Related questions

1 answer 262 views
1 answer 222 views
1 answer 204 views
1 answer 246 views
1 answer 232 views
1 answer 284 views
1 answer 197 views
...