Sunday, April 15, 2012

Program 17TH in C++

PROBLEM STATEMENT :

Return all factorials of given integer. Enhance your approach by avoiding linear traversing.

SOLUTION :

#include <cstdio>
#include <iostream.h>
#include <set.h>
#include <math.h>

using namespace std;

int main()
{

int num;
int i;
int flag=0;

cout<<"enter num : ";
cin>>num;

set factors;
set :: iterator it;

if(num < 0)
{
num*=-1;
}

for(i=1; i<=sqrt(num); i++)
{

if( num % i == 0 )
{
if(factors.find(i)==factors.end())
{
factors.insert(i);
factors.insert(num/i);
factors.insert(-i);
factors.insert(-num/i);

}
else
{
break;
}
}

}

cout<<"Factors are :";
for(it=factors.begin(); it!=factors.end(); it++)
{
cout<<" "<<*it;
}

}

No comments:

Post a Comment