`
lg_asus
  • 浏览: 193971 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

不用中间变量交换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是完数。
分享到:
评论

相关推荐

    C语言常用查找、排序算法探究及实现.pdf

    算法的基本思想是将待查找区间分成两半,然后判断待查找的值与中间元素的大小关系,以此缩小查找范围,直到找到目标值或区间为空。二分查找中同样使用了回调函数`fcmp`来进行比较。 3. 比较函数(Comparison ...

    C语言必背18个经典程序可直接打印.doc

    - 矩阵元素交换:`b[3-j][i] = a[i][j];`实现了从原矩阵到旋转矩阵的转换。 - `%6d`:确保输出的数字占6个字符宽,不足部分用空格填充。 6. **杨辉三角形** - 杨辉三角形:每一行的两端都是1,中间的数是上一行...

    最新JAVA编程题全集_50题及答案

    不使用中间变量 把两个变量的值互换 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, ...

    18个C程序实例

    原始矩阵存储在`a`数组中,旋转后的矩阵存储在`b`数组中。矩阵旋转的关键在于重新安排元素的位置,这里通过交换行和列实现了旋转。 6. **杨辉三角形**:杨辉三角形是组合数学中的一个重要概念,程序通过两层循环来...

    c++经典程序题库

    - **题目描述**: 把两个有序数组 a 和 b 合并,要求合并后的数组依然有序。 - **知识点**: - 数组的合并与排序。 - 比较与交换操作。 #### 二、函数编程练习题知识点解析 **1. 数字逆序输出** - **题目描述**:...

    做程序员必看的基础程序题

    首先将最小的数放在x上,通过比较和交换x与y以及x与z的值,最终使x、y、z按从小到大的顺序排列。 #### 程序6:字符图案输出问题 - **题目背景**:使用星号(*)输出字母C的图案。 - **解决方案**:可以在纸上先画出C...

Global site tag (gtag.js) - Google Analytics