583 TLE

All about problems in Volume V. If there is a thread about your problem, please use it. If not, create one with its number in the subject.

Moderator: Board moderators

583 TLE

Postby cse.mehedi » Thu Jul 19, 2012 10:16 pm

I am getting TLE. Any 1 help me 2 solve.
Code: Select all
#include<stdio.h>
#include<math.h>
int isPrime(long n)
{
    long i,len=sqrt(n);
    for(i=2;i<=len;i++)
    {
        if(n%i==0)
        return 0;
    }
    return 1;
}
void recurtion(long n)
{
    if(n<2) return 0;
    long i,len;
            for(i=2;;i++)
            {
                if(n%i==0)
                {
                    if(isPrime(i)==1)
                    {
                        printf(" x");
                        printf(" %ld",i);
                        recurtion(n/i);
                        break;
                    }
                }
            }
}

void main()
{
    long i,n,len;
    while(scanf("%ld",&n)==1)
    {
        if(n==0) break;
        if(n==1) printf("1 = 1\n");
        else if(n==-1) printf("1 = -1 x 1\n");
        else {
        if(n<0) {printf("%ld = -1 x",n);n*=-1;}
        else printf("%ld =",n);
        for(i=2;;i++)
        {
            if(n%i==0 && isPrime(i)==1)
            {
                len=n/i;
                printf(" %ld",i);
                break;
            }
        }
        recurtion(len);
        printf("\n");
        }
    }
}


cse.mehedi
New poster
 
Posts: 36
Joined: Sun Mar 18, 2012 8:18 am

Re: 583 TLE

Postby brianfry713 » Thu Jul 19, 2012 11:48 pm

Use a sieve to precompute the primes.
http://acm.uva.es/board/viewtopic.php?t=3170
brianfry713
Guru
 
Posts: 1742
Joined: Thu Sep 01, 2011 9:09 am
Location: San Jose, CA, USA


Return to Volume V

Who is online

Users browsing this forum: No registered users and 1 guest