Here you have a typo:
x += 2
should be
i += 2
This makes your isPrime(29)
return false
.
By the way, why bother? A much simpler solution would be to just factorize the number:
unsigned long long number = 13195;
unsigned long long i, max = 2;
unsigned long long orig = number;
for (i = 2; i <= orig; i++) {
while (number % i == 0) {
number /= i;
max = i;
}
}
printf("largest: %llu\n", max);