May 13'24

Exercise

Write a function to calculate if a number is prime. Return 1 if it is prime and 0 if it is not a prime.

May 13'24

// to compile: gcc -Wall prime.c -lm -o prime

  1. include // for the square root function sqrt()
  2. include

int is_prime(int n);

int main() {

 printf("Write an integer: ");
 int var;
 scanf("%d", &var);
 if (is_prime(var)==1) {
   printf("A prime\n");
 } else {
   printf("Not a prime\n");
 }
 return 1;

}

int is_prime(int n) {

 int x;
 int sq= sqrt(n)+1;

 // Checking the trivial cases first
 if ( n < 2 )
   return 0;
 if ( n == 2 || n == 3 )
   return 1;

 // Checking if n is divisible by 2 or odd numbers between 3 and the
 // square root of n.
 if ( n % 2 == 0 )
   return 0;
 for (x= 3; x <= sq; x += 2)
   {
     if ( n % x == 0 )

return 0;

   }

 return 1; 

}

Another better solution that doesn't need to include math.h and faster than the one above.

#include

int isPrime(const unsigned long long int);

int main(void) {

 unsigned long long n;
 scanf("%llu",&n);
 printf("%d\n",isPrime(n));
 while((n=getchar())!=10);
 getchar();
 return 0;

}

int isPrime(const unsigned long long int x) {

 if(x<4)
   return x>1;
 if(x%2==0||x%3==0)
   return 0;
 for(unsigned long int i=5;i*i<=x;i+=6)
   if(x%i==0||x%(i+2)==0)
     return 0;
 return 1;

}

References

Wikibooks contributors. "C Programming/Exercise solutions". Wikibooks. Wikibooks. Retrieved 13 May 2024.

00