一:不用中間變數交換a b值。
分析:a=a+b; #將a b的和賦值給a
b=a-b; #a的值已經發生變化,並且儲存了和值,因此這裡要只能對b進行求值,不能改變a的值。
a=a-b; #同理求得a值。
另一種解法:
a=a^b
b=a^b
a=a^b
^ 異域: a^b === a & ~b
完數:乙個數的所有因子(不包括自身)相加等於自身,則該數就是完數。如6的因子是1 2 3, multiply(1,2,3) == sum(1,2,3)
/*** 取得所有因子(不包括1和自身)
* @param num
* @return
*/private listfindallfactor(int num)
}if (!found)
return list;
}
測試了下,只有6是完數。
不用中間變數交換兩個數的值
當要交換兩個數的值時,通常的做法是定義乙個臨時變數,然後再進行交換。那麼能不能不用臨時變數而交換兩個數的值呢?可以的!c語言提供的異或運算就可以實現這樣的操作。異或運算子 也稱xor運算子,它的規則是若參加運算的兩個二進位同號,則結果為0 假 異號為1 真 即0 0 0,0 1 1,1 0 1,1 ...
不用臨時變數,交換兩個變數的值
在學習c語言的時候,涉及到兩個變數值的交換,其中用到臨時變數。類似於 temp a a b b temp 這樣的語句,如果在沒有臨時變數的情況下,該如何做呢?網路上的人們給出了兩種方法 一 異或法 a a b b b a a a b 二 加減法 a a b b a b a a b 其實我們看加減法更...
不用臨時變數交換兩個數的值
就地交換兩個數是比較經典而且基礎的演算法之一。我們要交換兩個數字,通常的做法就建立乙個中間變數,然後進行迴圈賦值,比如說下面的 void switch int p1,int p2 這種做法是最常見的一種交換兩個數字的方法,但研究演算法的人總是會提出比較詭異的問題,比如說在手持裝置中,記憶體資源很寶貴...