Connecting Tech Pros Worldwide Help | Site Map

Prime No. generator

  #1  
Old April 21st, 2007, 07:15 PM
ume$h
Guest
 
Posts: n/a
Why does this program fail to run?

//FIRST n PRIMES
#include <iostream.h>
#include <math.h>

int main(void)
{
long int i,j=3,count=1;
int n,flag=0;
cout<<"How many primes?";
cin>>n;
cout<<"2, ";
while(count<n)
{
for(i=1;i<(sqrt(j)+1);++i){
if(j%i==0) {flag=1;break;}
if(j>3 && flag==0) {cout<<j<<", ";++count;}}
++j;
}
return 0;
}

  #2  
Old April 21st, 2007, 07:45 PM
Heinz Ozwirk
Guest
 
Posts: n/a

re: Prime No. generator


"ume$h" <fraternitydisposal@gmail.comschrieb im Newsbeitrag
news:1177178809.327685.144790@b75g2000hsg.googlegr oups.com...
Quote:
Why does this program fail to run?
>
//FIRST n PRIMES
#include <iostream.h>
#include <math.h>
>
int main(void)
{
long int i,j=3,count=1;
int n,flag=0;
cout<<"How many primes?";
cin>>n;
cout<<"2, ";
while(count<n)
{
for(i=1;i<(sqrt(j)+1);++i){
if(j%i==0) {flag=1;break;}
if(j>3 && flag==0) {cout<<j<<", ";++count;}}
++j;
}
return 0;
}
1) How is a prime defined? Especially, what does the definition say about
dividing a prime by 1?
2) Is 3 a prime?
3) Are there any even primes except 2.
4) What happens to 'flag' once your program found a prime?
5) How often does your program compute sqrt(j) for each j?

Perhaps your answers to these questions will help you solving your problem.

HTH
Heinz


  #3  
Old April 21st, 2007, 07:55 PM
osmium
Guest
 
Posts: n/a

re: Prime No. generator


"ume$h" writes:
Quote:
Why does this program fail to run?
>
//FIRST n PRIMES
#include <iostream.h>
#include <math.h>
>
int main(void)
{
long int i,j=3,count=1;
int n,flag=0;
cout<<"How many primes?";
cin>>n;
cout<<"2, ";
while(count<n)
{
for(i=1;i<(sqrt(j)+1);++i){
if(j%i==0) {flag=1;break;}
Where is the code that sets flag equal to 1?
Can you get out of the loop without setting the flag?

You seem to be using Windows so here's a tip:

Activate the task mgr. Then activate your program. If the green icon in
the task bar turns bright green, you program is in a tight loop. (As here.)
Quote:
if(j>3 && flag==0) {cout<<j<<", ";++count;}}
++j;
}
return 0;
}
>

  #4  
Old April 21st, 2007, 08:25 PM
ume$h
Guest
 
Posts: n/a

re: Prime No. generator


//This one runs(Ultimately by self attempt!)

#include <iostream.h>
#include <math.h>
int main(void)
{
long int i,j=3,count=1;
int n;
cout<<"\nHow many first primes do you want to generate? ";
cin>>n;
if(n<0) {cout<<"Wrong No.\n Enter No. Again"; cin>>n;}
if(n==1 || n>1)cout<<"2, ";
if(n>1) while(count<n)
{

int flag=0;
for(i=2;i<sqrt(j)+1;++i)

if(j%i==0)
{
flag=1;break;
}

if(flag==0)
{
++count;cout<<j<<", ";
}
++j;

}

return 0;
}

  #5  
Old April 21st, 2007, 11:15 PM
red floyd
Guest
 
Posts: n/a

re: Prime No. generator


ume$h wrote:
Quote:
Why does this program fail to run?
Define "fail to run". Does it not compile? Does it give erroneous output?
See FAQ 5.8 http://www.parashift.com/c++-faq-lit...t.html#faq-5.8

Quote:
//FIRST n PRIMES
#include <iostream.h>
Non-standard header. #include <iostreamisntead
Quote:
#include <math.h>
using namespace std; // to get cin and cout.
Quote:
>
int main(void)
void in this context is superfluous and discouraged in C++.
Quote:
{
long int i,j=3,count=1;
int n,flag=0;
poor practice. Better practice is one declaration per line.
Define i inside the for loop. e.g. for (int i = 1; ...)
Quote:
cout<<"How many primes?";
cin>>n;
cout<<"2, ";
while(count<n)
{
for(i=1;i<(sqrt(j)+1);++i){
Hint: if you only check odd numbers for primality (see below), you can
increment i by 2 instead of 1.
Quote:
if(j%i==0) {flag=1;break;}
Your problem lies here. Hint. What is the initial value of i?
What is the value of j%i, for any j, given that initial value of i?

Also, formatting -- put the body of the if on a separate line.
Quote:
if(j>3 && flag==0) {cout<<j<<", ";++count;}}
Ditto here.
Quote:
++j;
Hint: 2 is the only even prime. You can bump j by 2.
Quote:
}
return 0;
}
>
Closed Thread


Similar Threads
Thread Thread Starter Forum Replies Last Post
Parallel/distributed generator George Sakkis answers 5 May 24th, 2007 04:25 AM
Beginners prime number generator Joel Mayes answers 10 December 14th, 2006 10:29 PM
Random Prime Generator/Modular Arithmetic Tuvas answers 20 March 6th, 2006 11:55 PM
Confusing performance results for prime Greg Brunet answers 9 July 18th, 2005 05:00 AM