#4337: 請幫我看一下哪錯了


kentlle (kentlle)

學校 : 不指定學校
編號 : 13628
來源 : [123.204.207.34]
最後登入時間 :
2010-10-04 18:25:53
a010. 因數分解 | From: [123.204.207.34] | 發表日期 : 2010-10-04 01:29

 

請問一下,我在我的電腦驗證都是ok,但上傳時卻遇到以下這個錯誤訊息,我該如何解決,謝謝… 

執行時發生錯誤 (SIGSEGV)(11)!!
Segmentation fault, an address reference boundary error.(記憶體區段錯誤)
可能原因為:
* 通常為使用超過陣列範圍
* 指標指向不正確位址!
* 陣列初始化不正確!
* 嘗試在執行時期定義陣列長度!
sh: line 1: 27338 程式記憶體區段錯誤   /tmp/code_581286.exe <a010.in >/tmp/code_581286.out

 

#include <stdio.h>
long int value(long int num)
{
    long int i;
    for(i=2;i<num/2;i++){
    if(num%i==0)
    {
     return 0;
    break;
    }
    else if(num/2==i+1)
    {
     return 1;
    break;}
        }
}

long int main(void)
{
long int a,i,j=0,k,index=0,l;
long int sum[20]={0};
long int summ[20]={0};
while(scanf("%d",&a)!=EOF)
  {
  if (!value(a))
  {
  for (i=2;i<a;i++,j++)
  {
      l=0;
    while(!(a%i))
    {
     sum[j]=i;
     summ[j]=++l;
     a=a/i;
    }
    if ((sum[j]!=0 )&& (summ[j]>1))
    {
    printf("%d^%d * ",sum[j],summ[j]);
    }
    else if(sum[j]!=0)
    {
       printf("%d * ",sum[j]);
    }
  if ( value(a))
    {
       printf("%d",a);
       break;
    }
  }
  }
  else
  {
     printf("%d",a);
  }
  }

return(0);
}

 
ZeroJudge Forum