TU-Programmieren_2/exercise8/task1.main.c
2025-04-09 10:22:44 +02:00

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;
}