首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

不要中间变量交换a b的值及完数

2013-08-11 
不用中间变量交换a b的值及完数一:不用中间变量交换a b值。分析:aa+b #将a b的和赋值给aba-b #a的值已

不用中间变量交换a b的值及完数
一:不用中间变量交换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 List<Integer> findAllFactor(int num){List<Integer> list = new ArrayList<Integer>();boolean found = false;for (int i = 2; i <= Math.sqrt(num); i++){if (num % i == 0){found = true;list.add(i);list.addAll(this.findAllFactor(num / i));break;}}if (!found){list.add(num);}return list;}


测试了下,只有6是完数。

热点排行