我已經寫了一個函數,使用Eratosthenes方法篩選素數。該函數使用整數工作正常,但我現在試圖長期支持,以便我可以處理大量數據。Java數據類型問題
我似乎無法得到與多頭工作的功能,並無法看到明顯的原因。
錯誤指的是典型的精密警告從類型轉換等,但我不能工作是什麼導致他們:
./com/wkilgour/lang/Maths.java:21: error: possible loss of precision
boolean[] isPrime = new boolean[n + 1];
^
required: int
found: long
./com/wkilgour/lang/Maths.java:24: error: possible loss of precision
isPrime[i] = true;
^
required: int
found: long
./com/wkilgour/lang/Maths.java:27: error: possible loss of precision
if (isPrime[i])
^
required: int
found: long
./com/wkilgour/lang/Maths.java:29: error: possible loss of precision
isPrime[i * j] = false;
^
required: int
found: long
4 errors
下面是函數:
public static boolean[] primeSieve(long n)
{
boolean[] isPrime = new boolean[n + 1];
for (long i = 2L; i <= n; i++)
isPrime[i] = true;
for (long i = 2L; i*i <= n; i++)
if (isPrime[i])
for (long j = i; i*j <= n; j++)
isPrime[i * j] = false;
return isPrime;
}
任何幫助將不勝感激!
是不是你的錯誤信息有點長? –
是的,有一些與精度有關的錯誤。我已經添加了完整的錯誤 – Wesk
你有沒有想過你需要多少內存,才能知道數字的「最大」值? –