简体   繁体   中英

Run time error in C for prime generator

I tried to solve a prime number generator problem in spoj.com. I solved it and it runs perfectly on my machine. But after submitting the solution to online, it shows run time error. Please help me!

Could anyone take a look into my code and tell where the problem is?

    #include <stdio.h>

    int primeFactor[350],w=0,z,i;

    main()
    {
        int m[9],n[9],t=0,tMax,j;
        scanf("%d",&tMax);
        while(t<tMax)
         {
           scanf("%d%d",&m[t],&n[t]);
           primeFactors(n[t]);
           t++;
          }
      for(j=0;j<tMax;j++)
      {
        for(z=m[j];z<=n[j];z++)
         {
           if(z>1)
             primeCalc(z);
          }
         printf("\n\n");
       }
    }

   primeFactors(int a)
    {
      int remainder;

      for(z=2;z<=sqrt(a);z++)
       {
          if(z==2) {primeFactor[w]=z; w++;}
          else
            {
              for(i=2;i<z;i++)
                {
                  if(z%i==0)
                    {
                      remainder=z%i;
                      break;
                     }
                   else {remainder=z%i;}
              }
            if(remainder!=0)
                {
                   primeFactor[w]=z;
                   w++;
                }
            }
        }
       return 0;
     }
   primeCalc(int x)
      {
         int remainder;
         if(x==2)
           {
            printf("%d\n",x);
            }
          else
            {
             for(i=0;i<w;i++)
               {
                 if(primeFactor[i]>=x)
                 break;
                 else if(x%primeFactor[i]==0)
                    {
                      remainder=x%primeFactor[i];
                      break;
                    }
                  else
                    {remainder=x%primeFactor[i];}
                 }
              if(remainder!=0)
                printf("%d\n",x);
        }
        return 0;
    }

Your main function may be returning some indeterminate value because it doesn't have any return statement and the judge may be treating it as Runtime Error. You will have to return 0 from the main function.

Also, you shouldn't omit the return type of each functions.

Try this:

#include <stdio.h>

int primeFactor[350],w=0,z,i;

int main(void)
{
    int m[9],n[9],t=0,tMax,j;
    scanf("%d",&tMax);
    while(t<tMax)
    {
        scanf("%d%d",&m[t],&n[t]);
        primeFactors(n[t]);
        t++;
    }
    for(j=0;j<tMax;j++)
    {
        for(z=m[j];z<=n[j];z++)
        {
            if(z>1)
            primeCalc(z);
        }
        printf("\n\n");
    }
    return 0;
}

int primeFactors(int a)
{
    int remainder;

    for(z=2;z<=sqrt(a);z++)
    {
        if(z==2) {primeFactor[w]=z; w++;}
        else
        {
            for(i=2;i<z;i++)
            {
                if(z%i==0)
                {
                    remainder=z%i;
                    break;
                }
                else {remainder=z%i;}
            }
            if(remainder!=0)
            {
                primeFactor[w]=z;
                w++;
            }
        }
    }
    return 0;
}
int primeCalc(int x)
{
    int remainder;
    if(x==2)
    {
        printf("%d\n",x);
    }
    else
    {
        for(i=0;i<w;i++)
        {
            if(primeFactor[i]>=x)
                break;
            else if(x%primeFactor[i]==0)
            {
                remainder=x%primeFactor[i];
                break;
            }
            else
            {remainder=x%primeFactor[i];}
        }
        if(remainder!=0)
            printf("%d\n",x);
    }
    return 0;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM