2016-12-17 55 views
1

我編寫了這個程序用於在兩個值之間生成素數。 它完美適用於整數值。 我試圖讓它適用於長整型值,但是隻要輸入長整型值,程序就會退出而不進行任何處理。 請幫我找到問題的代碼
代碼如下。java中的素數生成器

public class Prime_generator 
{ 
    public static void main(String[] args) { 
     Scanner src = new Scanner(System.in); 
     Prime_generator obj = new Prime_generator(); 
     int t, i, a; 

     t = src.nextInt(); 
     if (t > 10) 
      System.exit(0); 
     long a1[] = new long[t]; 
     long a2[] = new long[t]; 

     for (i = 0; i < t; i++) { 
      a1[i] = src.nextLong(); 
      a2[i] = src.nextLong(); 
     } 
     for (a = 0; a < t; a++) 
     { 

      if (a1[a] >= 1 && a1[a] <= 1000000000 && a2[a] >= 1 && a2[a] <= 1000000000 && a2[a] - a1[a] <= 100000 && a1[a] <= a2[a]) 
       obj.prime(a1[a], a2[a]); 
      else 
       System.exit(0); 
     } 

    } 
    void prime(long m, long n) 
    { 
     long j,k; 
     long c=0L; 
     for(j=m;j<=n;j++) 
     { 
      c=0L; 
      for(k=2;k<j/2;k++) 
      { 
       if((long)j%k==0L) 
       c++; 

      } 
      if(c==0L) 
       System.out.println(j); 
     } 
     System.out.println(" "); 

    } 
} 
+2

大概整數溢出 – GurV

回答

0

這是if語句中的大小限制。 你應該使用一個長期的限制,你在那裏使用一個整數。 這是一個例子,如果statment長

if (a1[a] >= 1 && a1[a] <= 1000000000000000l && a2[a] >= 1 && a2[a] <= 1000000000000000l && a2[a] - a1[a] <= 1000000000000000l && a1[a] <= a2[a]) 
+0

謝謝。有效。 –

+0

歡迎您。不要原諒標記答案是正確的:) –