2012-04-17 16 views
0

我需要完成在另一個號碼,檢查是否在數組中的數目除以在同一陣列

我有一個數組,2 3 4 5 6 7 8 9 10

我需要檢查如果數組中的任何數字完美分配數組中的任何其他數字。 (%= 0)如果是,請取消設置數字。

它在我的頭上,我無法得到它的工作,我試過的一切給我無限循環,使我生病。 (笑)

我不包括任何代碼,因爲所有的我能想出是一個嵌套的for循環,其不工作:(

所以這裏是一個示例:

輸入數組:2 3 4 5 6 7 8

輸出= 5 6 7 8

任何想法球員

UPDATE:

自己用更多的調試破解了螺母。 (櫃面如果能有人在將來會有所幫助。)

// use array_unique, array_values and $size = sizeof($array) 
for ($i = 0; $i < $size; $i++) 
{ 
for ($j = $size - 1; $j > $i; $j--) 
    if ($numbers[$j] % $numbers[$i] == 0) 
    { 
     unset($numbers[$i]); 
     break; 
    } 
} 
+3

但仍需發表您的嘗試。 – 2012-04-17 11:36:26

+1

另外,你的輸出不應該是2-8嗎?因爲它們都可以被1整除? – 2012-04-17 11:37:48

+0

@NiftyDude - 代碼破壞了算法,所以它實際上是一個非工作嵌套for循環。 :( – Kishor 2012-04-17 11:37:55

回答

4

我會在真正的代碼做到這一點,只是因爲我認爲你要做到這一點你自己。

LoopA iterating the intput array: 
    LoopB iterating the input array: 
    check division of loopA value and loopB value, and add the value of loopA to a new array accordingly 
    End loopB 
End loopA 
Print the new array 

注意:這並不完整,但它肯定會給你一個開始如何繼續。

-1

試試這個:

for($i = 0; $i < count($arr); $i++) 
{ 
    for($j = 0; $j < count($arr); $j++) 
    { 
     if($arr[$i] != $arr[$j] && $arr[$i] % $arr[$j] === 0) 
     { 
      unset($arr[$j); 
      break; 
     } 
    } 
} 
+2

您的算法將數字除以相同的數字因此取消了整個數組。 – Kishor 2012-04-17 11:49:38

+0

那裏。現在應該沒問題。 – d4rkpr1nc3 2012-04-17 12:15:56

1

對於排序有序數

$arr = array(2,3,4,5,6,7,8,9,10,11,12,13,14); 

$half_c = ceil(count($arr)/2) - 1; 
$result_array = array_slice($arr, $half_c); 

編輯:對於隨機排列,你可以再次削減一半,並遍歷數組中只有第一部分。素數理論也可以幫助爲陣列的第一部分編寫更快的算法。

+0

連續數字排序或剛剛排序的數字? – Kishor 2012-04-17 11:53:10

+0

它不會給你預期的結果,如果你從你的陣列中刪除14 – Tchoupi 2012-04-17 11:53:16

+0

@Mathieu - 這可能是因爲陣列的大小是奇數,不能被2除?但我不確定! 無論如何,這些數字可以是隨機的,但我可以按升序對其進行排序,但這並不意味着,數字將會被排序。 – Kishor 2012-04-17 11:55:45

0

如何:

$arr = range(2,20); 
$size = count($arr); 
for ($i=0; $i<$size; $i++) { 
    for ($j=$size-1; $j>$i; $j--) { 
     if ($arr[$j]%$arr[$i]) continue; 
     unset($arr[$i]); 
     break; 
    } 
} 
print_r($arr); 

輸出:

Array 
(
    [9] => 11 
    [10] => 12 
    [11] => 13 
    [12] => 14 
    [13] => 15 
    [14] => 16 
    [15] => 17 
    [16] => 18 
    [17] => 19 
    [18] => 20 
) 
相關問題