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