Skip to content

Instantly share code, notes, and snippets.

@nhatminhbui
Last active July 22, 2021 15:11
Show Gist options
  • Save nhatminhbui/26daac60c33970f409b6cdbc35f16ea3 to your computer and use it in GitHub Desktop.
Save nhatminhbui/26daac60c33970f409b6cdbc35f16ea3 to your computer and use it in GitHub Desktop.
// Bùi Minh Nhật | 201A290002 | Tối thứ 5
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
int SumEven(int**, int, int);
bool IsPrime(int);
int CountPrime(int**, int, int);
bool IsPowerOfTwo(int);
int FindMax(int**, int, int);
int main() {
int m, n;
printf("Nhap so hang m: "); scanf("%d\n", &m);
printf("Nhap so cot n: "); scanf("%d\n", &n);
// dynamically create array of pointers of size m
int **A = (int **)malloc(m * sizeof(int *));
// dynamically allocate memory of size n for each row
for (int r = 0; r < m; r++) {
A[r] = (int *)malloc(n * sizeof(int));
}
for (int r = 0; r < m; r++) {
for (int c = 0; c < n; c++) {
printf("Nhap phan tu A[%d][%d]: ", r, c);
scanf("%d\n", &A[r][c]);
}
}
printf("Phan tu lon nhat la %d\n", FindMax(A, m, n));
printf("Tong cac phan tu chan la %d\n", SumEven(A, m, n));
printf("So luong so nguyen to la %d\n", CountPrime(A, m, n));
printf("Vi tri co phan tu la luy thua cua 2:\n");
for (int r = 0; r < m; r++) {
for (int c = 0; c < n; c++) {
if (IsPowerOfTwo(A[r][c])) printf("[%d][%d]\n", r, c);
}
}
free(A);
return 0;
}
int SumEven(int **matrix, int m, int n) {
int sum = 0;
for (int r = 0; r < m; r++) {
for (int c = 0; c < n; c++) {
if (matrix[r][c] % 2 == 0) sum += matrix[r][c];
}
}
return sum;
}
bool IsPrime(int n) {
if (n == 1) return false;
if (n == 2) return true;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) return false;
}
return true;
}
int CountPrime(int **matrix, int m, int n) {
int count = 0;
for (int r = 0; r < m; r++) {
for (int c = 0; c < n; c++) {
if (IsPrime(matrix[r][c])) count++;
}
}
return count;
}
bool IsPowerOfTwo(int n) {
if ((n != 0) && ((n&(n-1)) == 0)) return true;
else return false;
}
int FindMax(int **matrix, int m, int n) {
int max = matrix[0][0];
for (int r = 0; r < m; r++) {
for (int c = 0; c < n; c++) {
if (matrix[r][c] > max)
max = matrix[r][c];
}
}
return max;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment