# Thread: I need help!!!!!!!!

1. ## I need help!!!!!!!!

Why doesn't this work, it gives me a syntax error identifier 'factor', I thought I identified factor. If anyone could help me get to where it will compile without errors that would be awesome.

#include <iostream.h>

//Factor(n,k) returns true if k is a factor of n and false otherwise

bool factor(bool n,bool k)

{
if (n%k==0)
return true;
else
return false;
}

//Prime(n) returns true if the number n is prime and false otherwise
//Count_factors(k,b,n) counts the number of factors of the number n from a to b inclusive

bool count_factors(bool k, bool b, bool n)

{
if (k>b)
return 0;
else
if factor(n,k)
return 1+count_factors(k+1,b,n);
else
return count_factors(k+1,b,n);
}

bool prime (bool n)

{
if (count_factors(1,n,n)==2)
return true;
else
return false;
}

void main()

{
cout << prime(10);
cout << endl;
cout << prime(11);
cout << endl;
}

2. Read the faq and the thread at the top called "Posting Code? Read this first"

Here is your code nicely formated with code tags and standardized. Note int main, and <iostream> not <iostream.h>.

Read the FAQ and you will see why. The faq is found at cprogramming.com

Code:
```#include <iostream>
using namespace std;

//Factor(n,k) returns true if k is a factor of n and false otherwise

bool factor ( bool n, bool k )
{

if ( n % k == 0 )
return true;

else
return false;

}

//Prime(n) returns true if the number n is prime and false otherwise
//Count_factors(k,b,n) counts the number of factors of the number n from a to b inclusive

bool count_factors ( bool k, bool b, bool n )
{

if ( k > b )
return 0;

else if factor ( n, k )
return count_factors ( k + 1 , b, n ) + 1;

else
return count_factors ( k + 1, b, n);

}

bool prime ( bool n )
{

if ( count_factors ( 1, n, n ) == 2 )
return true;

else
return false;

}

int main()
{

cout << prime ( 10 );
cout << endl;
cout << prime ( 11 );
cout << endl;

return 0;

}```
I didnt find the problem yet.. let me look and i'll get back to you.

one thing i noticed

if ( count_factors ( 1, n, n ) == 2 )

that wont work..

count_factors will always return 0 when its done.

3. >else if factor ( n, k )

if statments need to be put in parenthesis.

4. Originally Posted by Perspective
>else if factor ( n, k )

if statments need to be put in parenthesis.
Lol, i didnt even see that.

5. were are the int's all i see are bool's
and if there all bools, how can you check to
see if one is a factor of the other?

so every variable up there equals 1 or 0.
with that said what is the point of

Code:
```prime(10);

and

prime(11);```

6. Originally Posted by JarJarBinks
were are the int's all i see are bool's
and if there all bools, how can you check to
see if one is a factor of the other?

so every variable up there equals 1 or 0.
with that said what is the point of

Code:
```prime(10);

and

prime(11);```
Maybe that's why:
count_factors will always return 0 when its done.

Quzah.

7. @ chasehill:
your code is very complex, this is my program work as yours:

Code:
```#include <iostream>
using namespace std;

int prime(int start, int end)
{
int count = 0;
for(int i = start; i <= end; i++)
{
int flag = 0;
for(int j = 1; j <= i; j++)
{
flag += (i % j == 0);
}
if (flag == 2 || i == 1)  //is 1 prime?
{ cout << i << endl;
count++;
}
}
return count;
}

int main()
{
int a, b;
cout << "enter two numbers:";
cin >> a >>b;
//cout << prime(a, b) << endl;
cout<<"there are "<<prime(a, b) << " primes from "
<<a<<" to "<<b<<endl;

system("pause");
return 0;
}```

Popular pages Recent additions