2014-10-18 37 views
-2

$我需要迭代或循環大約10^15時間如何減少執行時間 我試圖減少int max值的時間,但我不能減少執行如何迭代或循環10^15在較少的時間在java

int k=0; 
for(int l = 1;l<1000000000;l++){ 
    for(int i=0;i<40;i++){ 
     if(a[i]==1){ 
      for(long j=x;j<=k;j++){ 
       if(j%(i+1)==0){ 
       System.out.println(k); 
      } 
     } 
    }x++; 
} 
size += s.size(); 
k+=40; 
if(size>n)break; 
s.clear(); 
} 

這裏的時候我不能循環它

+10

你想做什麼?最有可能在屏幕上打印的是在上面貼出的代碼示例中花費最多時間的內容。 – FDinoff 2014-10-18 17:07:29

+0

您在'println'語句後缺少一個結束符''''。我想知道這是否是您表現的根本原因 - 循環的最內層繼續無意中運行程序的其餘部分。 ;) – selbie 2014-10-18 17:32:49

回答

0

這可能是一個微型的優化,但你可以for循環的最外層與一個正下方結合。注意從int到long的變化。

for(int l = 1;l<1000000000;l++){ 
    for(int i=0;i<40;i++){ 
     if(a[i]==1){ 
      for(long j=x;j<=k;j++){ 
       if(j%(i+1)==0){ 

變爲這樣:

for(long l = 1;l<40000000000L;l++){ 
    if(a[l%40]==1){ 
     for(long j=x;j<=k;j++){ 
      if(j%(l%40+1)==0){ 

我沒有這個測量或模擬的一個PERF運行。所以YMMV。