2017-03-15 81 views
0

我試圖找到x = y^4 = z^6 = 5k = 2l的數字x。有沒有辦法比較第四和第六個功率數組的數組以找到最小的公共元素?如何比較兩個數組以找到常用元素?

int[] fourth = new int[1000]; 
    int[] sixth = new int[1000]; 
    for (int i = 1; i < 1000; i++) { 
     if (i*i*i*i % 10 == 0) { 
      int count = 0; 
      fourth[count] = (i*i*i*i); 
      count++; 
     } 
    } 
    for (int i = 1; i < 1000; i++) { 
     if (i*i*i*i*i*i % 10 == 0) { 
      int count = 0; 
      sixth[count] = (i*i*i*i*i*i); 
      count++; 
     } 
    } 
+0

'1000^6'是頗有幾分大於可容納在'int'。你的陣列的頂端將充滿了行李。你可能想把它們改成'long []'。 – azurefrog

+0

@azurefrog對不起,這是一個笑話,因爲變量名的視覺模糊選擇 – CraigR8806

回答

0

第一件事:i^4 % 10 == 0意味着i % 10 == 0,所以你必須10, 20, 30, ..., 990

for (int i = 10; i < 1000; i+=10){ 
    int count = 0; 
    fourth[count] = (i^4); 
    count++; 
} 

爲了進一步提高,你可以簡單地做一個數學技巧。

for (int i = 10; i < 1000; i+=10){ 
    double val = i^(4/6); 
    if (val % 10 == 0 and 0<val<1000) 
     system.out.println((val^(6/4)) + " is a number you are looking for!!!."); 
} 

你不需要迭代1到10,你不需要計算所有的值。

編輯:

看來你要計算的x = y^4 = z^6 = 5k = 2l,假設x,y,z,k,l是整數,X應該是被10整除,它應該是第4和一些整數的6次方,這意味着的是12次方一些整數。

這裏是一個數字,你要尋找的名單:

for (i = 10; i < 1000; i+=10){ 
    long long a = i^12; 
    System.out.println(a); 
}