`

找出一些数,这些数不管几个相加得到的值或着单个的数都不会重复

    博客分类:
  • java
 
阅读更多
根据linux的权限4(read),2(write),1(x),就想可以给任意一个开始的数,求一个类似于linux权限的数据列,这些数列有这些特点:这些数不管几个相加的值或着单个的数都不会重复。就如1,2,4,8这个数列,可以产生的值有,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15这些值,反过来,如果拿出来一个值7那么就能在这个数列里找到唯一的是哪几个数相加的值,比如7就一定是1+2+4的值不会是别的。

于是写了一个类,给出一个开始数,然后找到一个类似于上面的一个数列。
类如下,这里只找到10000。
用这个虽然可以找到任意开始值的这么一个数列,但是总感觉这样计算太消耗内存,效率太低,总认为可以像数学上那样可以找到一个通项工式,就像有前面一个数就可以根据这个工式得到他的下一项,这样不会消耗内存效率也高,可是研究来研究去也没有找到这样的一个工式,不过发现不管从几开始,到一定的程序下一个数就是前面一个数的2倍,关键是不知道从何时开始会出现这个规律,数越大,这个规律出现的越迟。



import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;


public class TestS {
	public static void main(String []args){
		printNumbers(1);
	}
	
	public static Set<Integer> printNumbers(Integer startNumber){
		Set<Integer> resultSet = new HashSet<Integer>();
		Set<Integer> resultSet1 = new HashSet<Integer>();
		Set<Integer> numbersSet = new HashSet<Integer>();
		for(int i = startNumber ; i < 10000 ; i ++){
			if(!resultSet.contains(i)){
				boolean flag = true;
				for(Integer j : resultSet){
					if(resultSet.contains(j + i)){
						flag = false;
						break;
					}
				}
				if(!flag){
					continue;
				}
				for(Integer j : resultSet){
					resultSet1.add(j+i);
				}
				numbersSet.add(i);
				resultSet.add(i);
				if(resultSet1 != null && resultSet1.size() > 0){
					resultSet.addAll(resultSet1);
					resultSet1.clear();
				}
				
				System.out.print(i + "----");
				printSet(numbersSet);
				System.out.print("----");
				printSet1(resultSet);
			}
			
		}
//		printSet(numbersSet);
		return numbersSet;
	}
	
	public static void printSet(Set<Integer> setObj){
		Set<Integer> numberTreeSet = new TreeSet<Integer>(setObj);
		for(Integer i : numberTreeSet){
			System.out.print(i+",");
		}
	}
	
	public static void printSet1(Set<Integer> setObj){
		Set<Integer> numberTreeSet = new TreeSet<Integer>(setObj);
		for(Integer i : numberTreeSet){
			System.out.print(i+",");
		}
		System.out.println("#############");
	}
	}
	
}
分享到:
评论

相关推荐

    多位数乘一位数笔算乘法例例PPT学习教案.pptx

    同样的,0乘以任何数也等于0,因为0表示没有,所以0乘以任何数表示没有几个数相加,结果自然是0。例如,0×7=0,7×0=0。这一特性在实际应用中非常关键,如在统计物品数量时,如果有0个,那么其总和就是0。 在教学...

    苏教版二年级数学下册全册知识点总结归纳清单.pdf

    例如,可以将整十数加一位数视为几个十和几个一的组合,而减法则理解为从几十几中减去几个十或几个一。 5. **找规律填数**:在这一环节,学生需要观察并找出数字间的规律,例如,可能需要两两、三三、五五或十十个...

    苏教版一年级下册小学数学全册期末复习单元知识清单.docx

    找出数字间的规律是关键,可以通过两两、三三、五五或十十地数来发现规律。 易错点4:数的大小比较。比较时,先比较高位,高位相同则比较低位,避免混淆比较方法。 ### 第四单元:口算和实际问题解决 易错点1:...

    一年级数学上册第十单元:总复习总复习第一课时课件.ppt

    - 还有一些问题要求学生找到数字之间的关系,比如找出两个数之间的数,或找出比某个数多或少1的数。 7. **数的排序**: - 学习如何根据数值大小将数字进行排序,从大到小或从小到大排列。 8. **应用实践**: - ...

    数学广场——数苹果沪教三年级第二学期实用教案.pptx

    通过填空练习,学生需要计算出不同边长的正三角形的数量,如边长为1cm、2cm、3cm和4cm的正三角形各有几个,然后将这些数字相加,得到总数。 探究三则引入了三角形计数的更复杂情况,学生需要理解三角形数量与图形...

    小学一至六年级数学公式大全.doc

    - 加数 + 加数 = 和:两个或多个数相加的结果。 - 和 - 一个加数 = 另一个加数:用于找出未知的加数。 - 被减数 - 减数 = 差:减法运算的结果。 - 被减数 - 差 = 减数:找到减数。 - 差 + 减数 = 被减数:通过...

    小学数学复习资料大全.doc

    - 加数+加数=和:两个数相加得到和。 - 和-一个加数=另一个加数:求出未知的加数。 - 被减数-减数=差:减法的基本运算。 - 被减数-差=减数:找到减数。 - 差+减数=被减数:还原被减数。 6. **乘法和...

    苏教版数学5年级下册知识点.pdf

    在求解方程时,需要找到一个或多个未知数的值,使等式成立,这样的值被称为方程的解。解方程时会用到等式的性质,包括等式两边同时加上或减去相同的数,等式仍然成立;等式两边同时乘以或除以相同的非零数,等式同样...

    第二学期青岛版五四制一年级数学期中测试题及答案精选.doc

    5. **数字排列**:题目要求用1、8、5三个数字组成两位数,并找出最大和最小的数,这涉及到数字的排列顺序及其对数值的影响。 6. **数位差异**:找一个在60和80之间的数,个位和十位相差3,这个问题需要孩子理解数位...

    新北师大版小学数学知识点总结.doc

    - **加数+加数=和**:加法的基本概念,两个数相加得到和。 - **和-一个加数=另一个加数**:找到未知的加数。 - **被减数-减数=差**:减法的基本概念,被减数减去减数等于差。 - **被减数-差=减数**:解...

    小升初数学总复习资料重点归纳.doc

    - 加数+加数=和:基本的加法原理,两个或多个数相加得到总和。 - 和-一个加数=另一个加数:求解未知的加数。 - 被减数-减数=差:减法运算,找出两数相减的结果。 - 被减数-差=减数:已知被减数和差,求...

    二元一次方程训练题.doc

    第五题要求将50元面额的人民币兑换成10元或20元的零钱,找出所有可能的组合。这可以通过设置未知数来计算不同面额纸币的数量来解决。 6. 追及问题通常与代数方程组相关。第六题中,甲乙两人的速度和距离构成了两个...

    二年级奥数.计算.等式加减(1).docx

    【例5】通过两个加法等式,找出其中的增量,求解△的值。 【例6】同样通过两个等式,结合平均数的概念,求解△。 【例7】实际应用问题,通过价格的等式关系求解每支铅笔的价格。 【例8】多变量的和差问题,求解未知...

    人教版小学数学六年级(下册)总复习知识点汇总.doc

    17. **和-一个加数=另一个加数**:知道和和其中一个加数,可以找出另一个加数。 18. **被减数-减数=差**:减法的概念,被减数减去减数等于差。 19. **被减数-差=减数**:逆运算,从被减数中减去差,得到减数。 20. *...

    第二学期北京版五年级数学课课练及答案全册69精选.doc

    5. 当我们需要找出一系列分数,这些分数大于 但小于 时,我们可以考虑将这两个分数之间的分数进行列举。例如, 和 之间的分数可以有 , , 等等,只要保证每个分数的分子大于 的分子且小于 的分子,同时分母相同。 ...

    新版苏教版三年级数学上册期中考试题(一套).pdf

    【知识点解析】 1. 近似数:题目中提到"这个六位数的近似数是...这些知识点覆盖了小学三年级数学的基础内容,包括数的认识、运算规则、几何概念、单位换算、问题解决等,这些都是学生在学习过程中需要掌握的核心技能。

    (2021-2022年收藏)新北师大版小学数学知识点总结.doc

    - **积÷一个因数=另一个因数**:通过积和一个因数找出另一个因数。 - **被除数÷除数=商**:除法关系,被除数除以除数等于商。 - **被除数÷商=除数**:从被除数和商中找到除数。 - **商×除数=被除数**:通过...

    2021年人教版一年级数学上册第二次月考考试题及答案【完整】.pdf

    试卷分为几个部分: 1. 计算小能手:这部分主要考察学生的加减法基础,如9+3=12,7-0=7等。题目设计涵盖了简单的单个数字相加、减以及连续加减的运算。 2. 填空题:考察学生对数字序列的理解和数字间关系的认识,...

    分数乘除法应用题的解题方法及对比练习题经典题型.doc

    1. 找出含有分率的关键句:在题目中,通常会有一句描述比例关系的句子,这句句子是解决问题的关键。 2. 确定单位“1”的量:单位“1”是问题中被比较或作为基础的量,通常由“的”字前或“比”字后的量来表示。 3. ...

    Python数据分析入门教程(五):数据运算.docx

    `max()`函数找出列或行中的最大数值。 5. min:求最小值。`min()`函数则返回最小数值。 6. median:求中位数。中位数是数据排序后位于中间位置的数值,不受极端值影响,是衡量数据集中心趋势的稳健统计量。 这些...

Global site tag (gtag.js) - Google Analytics