2013-09-25 33 views
1

這裏是我的代碼:爲什麼我的程序說整數對於Project Euler#3(Java)來說太大了?

public static boolean isPrime(long num) 
    { 
     for(long i=2; i<=num/2; i++) 
     { 
      if(num%i==0) 
      { 
       return false; 
      } 
     } 
     return true; 
    } 

    public static long findLargestPrimeFactor(long n) 
    { 
     long max=0; 
     for(long factor=2; factor<n; factor++) 
     { 
      if(n % factor==0) 
      { 
       if(isPrime(n/factor)==true) 
       { 
        max=factor; 
       } 
      } 
     } 
     return max; 
    } 

然而,當我運行它,它說,該整數600851475143太大。誰能幫我?

+0

我沒有看到你的代碼中對該數字的任何引用。你是否得到一個運行時異常?什麼是「它」給你這個信息? –

+0

將所有'long's更改爲'double's –

+0

如何調用您的'findLargestPrimeFactor'方法以及您在哪裏看到此錯誤? – rocketboy

回答

7

我會打賭你打電話

isLargestPrimeFactor(600851475143); 

因爲這是在項目歐拉#3所給出的問題。這將無法編譯出錯:

error: integer number too large: 600851475143 

對不起?如果是這樣的情況,請嘗試:

isLargestPrimeFactor(600851475143L); 

的「L」後綴告訴你的意思是這是一個很長的文字,而不是一個int編譯器(否則編譯器會將其作爲文字的整數,它太大到適合一個整數)

相關問題