0

i have to define a function that tests number from 2 to 10000 to see if they are prime.
heres what i have so far.

#include <iostream>
#include <iomanip>
using namespace std;

bool find_prime(int);

int main ()
{
	int i, counter =0;
	bool test;

	for (i =2; i <= 500; i++)
	{
		test = find_prime(i);
		if ( test == true )
		{
			counter++;
			cout << setw(6) << i << "\t";
		}
	}
	cout << "\nThe total number of the prime numbers between 2 and "  << i << " is " << counter << endl;
	return 0;
}

bool find_prime (int m)
{
 int temp, j;
 for ( j = 2; j < m - 1 ; j++ )
 {
	temp = m % j;
	if (temp == 0)
	{
	return false; 
	break;
	}
	else  
	{
	 return true;
	 break;
 }
 }}

but it only tests prime numbers until about 500 or so then it gets most of the numbers to be prime but it still includes non prime numbers for some reason. ANy ideaS?
thanks

3
Contributors
2
Replies
3
Views
12 Years
Discussion Span
Last Post by samarth
0

i have to define a function that tests number from 2 to 10000 to see if they are prime.

for (i =2; i <= 500; i++)

but it only tests prime numbers until about 500 or so

That's what you tell it to do.

then it gets most of the numbers to be prime but it still includes non prime numbers for some reason. ANy ideaS?

You might try Google to see if there are any other algorithms to compare yours to.

0

Hi,

1) The "break" statement after the return does not have any effect
2) I think the logic of the program is incorrect and that may be the reason why the program returns non primes. Can u try the following code. I havent checked it but I think it should work


rgds
Sam

bool find_prime (int m)
{
 int temp, j;
 for ( j = 2; j < m - 1 ; j++ )
 {
             temp = m % j;
	if (temp == 0)
	{
	  return false; 
	}
 }
 return true;
}
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.