一:不用中间变量交换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是完数。
分享到:
相关推荐
算法的基本思想是将待查找区间分成两半,然后判断待查找的值与中间元素的大小关系,以此缩小查找范围,直到找到目标值或区间为空。二分查找中同样使用了回调函数`fcmp`来进行比较。 3. 比较函数(Comparison ...
- 矩阵元素交换:`b[3-j][i] = a[i][j];`实现了从原矩阵到旋转矩阵的转换。 - `%6d`:确保输出的数字占6个字符宽,不足部分用空格填充。 6. **杨辉三角形** - 杨辉三角形:每一行的两端都是1,中间的数是上一行...
不使用中间变量 把两个变量的值互换 int a=10; int b=100; a=a*b; b=a/b; a=a/b; System.out.print("a="+a+" b="+b); 折半查找 public class Test { public static int[] data = { 12, 15, 20, 10, 19, 3, 89, ...
原始矩阵存储在`a`数组中,旋转后的矩阵存储在`b`数组中。矩阵旋转的关键在于重新安排元素的位置,这里通过交换行和列实现了旋转。 6. **杨辉三角形**:杨辉三角形是组合数学中的一个重要概念,程序通过两层循环来...
- **题目描述**: 把两个有序数组 a 和 b 合并,要求合并后的数组依然有序。 - **知识点**: - 数组的合并与排序。 - 比较与交换操作。 #### 二、函数编程练习题知识点解析 **1. 数字逆序输出** - **题目描述**:...
首先将最小的数放在x上,通过比较和交换x与y以及x与z的值,最终使x、y、z按从小到大的顺序排列。 #### 程序6:字符图案输出问题 - **题目背景**:使用星号(*)输出字母C的图案。 - **解决方案**:可以在纸上先画出C...