45 lines
1.0 KiB
C
45 lines
1.0 KiB
C
#include <stdio.h>
|
|
#include <stdbool.h>
|
|
|
|
bool isprime(unsigned int num) {
|
|
// Handle edge cases (0, 1, and even numbers greater than 2)
|
|
if (num <= 1 || num % 2 == 0 && num > 2) {
|
|
return false;
|
|
}
|
|
|
|
// Efficiently check divisibility only up to the square root of num
|
|
for (unsigned int i = 3; i * i <= num; i += 2) {
|
|
if (num % i == 0) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
int count_primes(unsigned int values[], int size) {
|
|
int count = 0;
|
|
for (int i = 0; i < size; i++) {
|
|
if (isprime(values[i])) {
|
|
count++;
|
|
}
|
|
}
|
|
return count;
|
|
}
|
|
|
|
int main() {
|
|
unsigned int arr1[] = {1, 20, 21, 43, 32, 42, 2344, 42433, 6, 2, 0, 22, 45, 47, 1033, 1247};
|
|
int size1 = sizeof(arr1) / sizeof(arr1[0]);
|
|
|
|
unsigned int arr2[] = {21, 22, 44, 33, 7, 3, 1, 23, 46, 48, 1034, 1248};
|
|
int size2 = sizeof(arr2) / sizeof(arr2[0]);
|
|
|
|
int primes1 = count_primes(arr1, size1);
|
|
int primes2 = count_primes(arr2, size2);
|
|
|
|
int total_primes = primes1 + primes2;
|
|
|
|
printf("Total number of primes: %d\n", total_primes);
|
|
|
|
return 0;
|
|
}
|