``````/*************************************************
How common are primes?

Write a program that reads a number n from the
user and returns the percentage of the first n
integers that are prime (we'll say 1 is *not*
prime).  Write and use a predicate isprime(k)
in your program.  Remember, a number k is prime
if 1 and k are the only numbers that evenly
divide k.
*************************************************/
#include <stdio.h>

int isprime(int p);

int main() {
// Get value n
int n;
printf("Enter n: ");
fflush(stdout);
scanf(" %d", &n);

// Count number of primes
int count = 0;
for(int k = 1; k <= n; k++) {
if (isprime(k)) {
count++;
}
}

// Compute and print out percentage
double p = count/(double)n * 100.0;
printf("%g%% of the first %i integers are prime\n",
count/(double)n * 100.0,
n);

return 0;
}

/***********************************
** isprime(k)
***********************************/
int isprime(int p) {
// the smallest prime is 2
if (p < 2) {
return 0;
}

// search for divisors in [2,p-1]
for(int div = 2; div < p; div++) {
if (p % div == 0) {
return 0;
}
}

// no divisors were found, p's prime!
return 1;
}``````