不用中間變數交換a b的值及完數

2021-09-01 19:10:27 字數 504 閱讀 3780

一:不用中間變數交換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 這種做法是最常見的一種交換兩個數字的方法,但研究演算法的人總是會提出比較詭異的問題,比如說在手持裝置中,記憶體資源很寶貴...