Hey guys,

My program basically accepts an index(less than 46) and determine whether it's fibonacci number is prime or not . i am basically done with my program which determine whether the but its not returning the right output. I tried debugging to see if the fibonacci number is correct and it is. i really dont know whats wrong.

Here are indexes known to be prime: 3, 4, 5, 7, 11, 13, 17, 23, 29, 43

some sites suggests that 19, 31, 37, 41 are primes as well but that I do not know.

My program tells me these indexes are prime: 3, 4, 5, 7, 11, 13, 17, 19, 22, 23, 26, 29, 31, 34, 37, 38, 41, 43, 46

I also tried changing the divisor instead of from (2 - 20) to (2 - input), but then it returns the answer VERY SLOW for very large indexes. Please find the problem. Thanks in advance

Heres the code

Code:`#include <stdio.h>`

int fibo(int n);

int fibo_prime(int n);

int prime(int n);

int main()

{

int n;

int result;

printf("Enter a positive integer as Fibonacci index(less than 46): ");

scanf("%d", &n);

result = fibo_prime(n);

if (result == 0)

printf("Fibonacci index %d will not result in a Fibonacci prime!\n", n);

else //if (result == 1)

printf("Fibonacci index %d will result in a Fibonacci prime!\n", n);

}

int fibo_prime(int n)

{

int fibo_number;

fibo_number = fibo(n);

prime(fibo_number);

return prime(fibo_number);

}

int fibo(int n)

{

int fib_a, fib_b, result, temp, i;

temp = 0;

if (n == 0)

result = 0;

else if (n == 1)

result = 1;

else

{

fib_a = 0;

fib_b = 1;

for (i = 2; i <= n; i++) {

temp = fib_a;

fib_a = fib_b;

fib_b = temp + fib_a;

result = fib_b;

}

}

return result;

}

int prime(int n)

{

int divisor;

int prime = 1; //Assume the number is prime

if (n == 1)

return 0;

else {

for (divisor = 2; divisor <= 20; divisor++) { //for divsior between 2 - input

if (((n%divisor) == 0) &&(n != divisor))// TEST number if its prime or not

prime = 0;

}

if (prime)

return 1;

else

return 0;

}

}