// Robert A.Simpson
// cs 132
// Oct. 12,1997
// unit 4
// This program will be our first one to use functions.
// This program will ask for to integers and give you
// all the prime and perfect numbers inbetween.
#include <iostream.h>
#include <iomanip.h>
int getnumber(int,int);
void numbvalue(int &,int &);
int divisor(int,int);
int prime(int);
void printprime(int,int);
int perfect(int);
void printperfect(int,int);
int repeat(int);
// start function main
main()
{
do{
int numb1=2,numb2=10000; // initialize starting variables
cout<<endl;
numbvalue (numb1,numb2);
printprime(numb1,numb2);
printperfect(numb1,numb2);
}while (repeat(1)==1);
return(0);
}
// begin function getnumber
getnumber (int numb1,int numb2){
int number;
do{
cout <<"PLEASE INTER A NUMBER BETWEEN "<<numb1 <<" AND "<<numb2<< " ?";
cin>>number;
}while (number<numb1 || number>numb2);
return number;
}
// begin function numbvalue
void numbvalue (int & numb1,int & numb2){
numb1=getnumber(numb1,numb2);
numb2=getnumber(numb1,numb2);
}
// begin function divisor
divisor (int numb1,int numb2){
return (numb1%numb2);
}
// begin function prime
prime (int numb1){
for (int count=2;count<numb1;count++){
if (divisor(numb1,count)==0)
return(0);
}
return(1);
}
//begin function printprime
void printprime(int numb1,int numb2){
int count=0;
for (;numb1<=numb2;numb1++){
if (prime(numb1)==0)
continue;
cout <<setw(10)<< numb1;
count++;
if (count%5==0)
cout<<endl;
}
cout <<endl<<endl;
cout <<"There are "<<count<<" prime numbers."<<endl<<endl;
}
// Begin function perfect
perfect(int numb1){
int count=0;
for (int count1=1;count1<numb1;count1++){
if (numb1%count1==0)
count=count+count1;
}
return(numb1==count);
}
// begin function printperfect
void printperfect(int numb1,int numb2){
int count=0;
for (;numb1<numb2;numb1++){
if (perfect(numb1)==0)
continue;
cout <<setw(10)<< numb1;
count++;
if (count%5==0)
cout<< endl;
}
cout<<endl<<endl;
cout<<"There are "<<count<<" perfect numbers."<<endl;
cout<<endl<<endl;
}
// begin function repeat
repeat(int res){
char response;
for (int x=1;x<100;x++){ // 'x' is used for counting only
cout <<"Do you wish to run this program again? "<<endl;
cout<< "Please enter 'y' for yes and 'n' for no. " ;
cin>>response;
if (response=='Y' || response=='y') // These 'if' statements will return
return(1); // a falue of 1 if yes and 2 if no.
if (response=='N' || response=='n')
return (0);
cout<<"That was and invalid response. "<<endl;
}}