Microsoft Interview Question
Developer Program EngineersCountry: India
Interview Type: Written Test
int count;
void check_factorial_prime(int var)
{
int a=sqrt(var-1);
int b=sqrt(var+1);
int i;
for(i=2;i<=a;i++)
{
if((var-1)%i==0)
break;
}
if(i==a+1)
{
cout << var-1<<endl;
count++;
}
for(i=2;i<=b;i++)
{
if((var+1)%i==0)
break;
}
if(i==b+1)
{
cout << var+1<<endl;
count++;
}
}
int main()
{
int n;
cout << "Enter n : ";
cin >> n;
int i=3;
count=2;
int mult=2;
if(n==1)
cout << "2\n";
else
{
cout << "2\n";
cout << "3\n";
while(count!=n)
{
mult=mult*(i++);
check_factorial_prime(mult);
}
}
return 0;
}
public static void getFactorialPrimes(int N)
{
BigInteger factorial= new BigInteger("1");
BigInteger one= new BigInteger("1");
for(int i=0, nextNum=1; i<N;)
{
if(factorial.subtract(one).isProbablePrime(100))
{
System.out.println(factorial.subtract(one).toString());
i++;
}
if(factorial.add(one).isProbablePrime(100))
{
System.out.println(factorial.add(one).toString());
i++;
}
factorial= factorial.multiply(new BigInteger(""+(++nextNum)));
}
}
while(i<N)
{
fact=factorial(i) ;
if(is_prime(fact-1))
printf("%d",fact-1) ;
if(is_prime(fact+1) )
printf("%d",fact-1) ;
}
Factorial prime:
Its a prime number that is 1 less or 1 more than a factorial.
e.g
Also, what the OP meant was prime "factors" and not prime "factorials"
- chandershivdasani August 23, 2012