print all prime numbers between 2 and some integer n
#include<iostream>
#include<cmath>
using namespace std;
typedef int collection[200];
void primes(int n);
void create(int n,collection c);
void remove(int n,collection c);
void print(int n,collection c);
void set(int n,collection c);
void insert(int i,collection c);
void omit(int i,collection c);
void remove(int n,collection c);
int nonprimes(int factor,int n);
void deletep(int factor,int n,collection c);
void print(int n,collection c);
int belongs(int i,collection c);
int main()
{
int n;
cout<<"Please input a positive integer:";
cin>>n;
primes(n);
cout<<endl;
return 0;
}
void primes(int n)
{
collection candidates;
create(n,candidates);
remove(n,candidates);
print(n,candidates);
}
void create(int n,collection c)
{
int i;
set(n,c);
for(i=2;i<=n;i++)
insert(i,c);
}
void remove(int n,collection c)
{
int firstprime=2;
int factor=firstprime;
while(nonprimes(factor,n)){
deletep(factor,n,c);
factor++;
}
}
void set(int n,collection c)
{
int i;
for(i=1;i<=n;i++)
c[i]=0;
}
void insert(int i,collection c)
{
c[i]=1;
}
void omit(int i,collection c)
{
c[i]=0;
}
int belongs(int i,collection c)
{
return c[i];
}
int nonprimes(int factor,int n)
{
if(factor<=sqrtl(n))
return 1;
return 0;
}
void deletep(int factor,int n,collection c)
{
int nextmultiple=2*factor;
while(nextmultiple<=n){
omit(nextmultiple,c);
nextmultiple+=factor;
}
}
void print(int n,collection c)
{
int i;
for(i=2;i<=n;i++){
if(belongs(i,c))
cout<<i<<'/t';
}
}