Hi everybody!

I'm new here, and need a bit of help to solve a simple problem. I wrote a program to check if a number you entered is a prime or not.

To be efficient you need only to check from 3 to the divisors n=sqrt(m), where m is the number you entered.

If I use sqrt() in the form follows, it normally works.

Code:

double n = sqrt(64);

If the function sqrt() is used in the form as follows and it doesn't work.

Code:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long is_prime(long n);
int main(int argc, char *argv[]){
long n;
do {
printf("\n\n\n\b");
printf( "Welcome to the is_prime? program!\n\n"
"Enter you number which should be checked:\n"
"\tn = ");
scanf("%ld",&n);
getchar();
if (n>0){
if (is_prime(n))
printf("\n\n\t%ld is a valid prime!\n\n",n);
else
printf("\n\n%ld is NOT a prime.\n\n",n);
}
else printf("\n\nInvalid input!\n\n");
} while (n!=0);
return EXIT_SUCCESS;
}
long is_prime(long n){
long i;
if (n==4)
return 0;
//for (i=3; i<n; i+=2){
for (i=3; i<sqrt((double)(n)); i+=2){
if (!(n%i))
return 0; //no prime
}
return 1; // prime
}

Error msg: ue1_test.o: In function `is_prime':

/home/deguss/TUW/prog1/ue1_test/ue1_test/src/ue1_test.c:62: undefined reference to `sqrt'

Thank you for any help.

## Bookmarks