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.
double n = sqrt(64);
If the function sqrt() is used in the form as follows and it doesn’t work.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long is_prime(long n);
int main(int argc, char *argv]){
long n;
do {
printf("
\b");
printf( "Welcome to the is_prime? program!
"
"Enter you number which should be checked:
"
" n = ");
scanf("%ld",&n);
getchar();
if (n>0){
if (is_prime(n))
printf("
%ld is a valid prime!
",n);
else
printf("
%ld is NOT a prime.
",n);
}
else printf("
Invalid input!
");
} 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.