备考蓝桥杯(38)迭代器输出java实现
2018-04-02 17:37
337 查看
package pers.robert.lanqiaobeizhenti129; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Scanner; import java.util.Set; /** * 48.亲密数 假设有a、b两个数,若a的所有因子之和等于b,b的所有因子之和等于a, 并且a不等于b,则称a和b是一对亲密数。如284和220就是一对亲密数。 分析: 若要找出10000以内的亲密数,可使用以下算法: (1)对每一个数i,将其因子分解出来,并将因子保存到一个数组中,再将因子之和保存到变量b1。 (2)将因子之和b1再进行因子分解,并将因子保存到一个数组中,将因子之和保存到变量b2中。 (3)若b2等于i,并且b1不等于b2,则找到一对亲密数为i和b1,可将其输出。 (4)重复步骤(1)~(3),即可找出指定范围的亲密数。 * @author Robert * */ public class The048SweetNumberDemo1 { public static int obtain(int n) {//得出n的因子和 int sum = 0; for (int i = 1; i < n; i++) { if (n % i == 0) { sum += i; } } return sum; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); Set<Set<Integer>> sets = new LinkedHashSet<Set<Integer>>(); for (int i = 1; i <= n; i++) { int t = obtain(i);//t=i的因子和 if (i != t) {//如果i不等于t if (obtain(t) == i) {//如果t的因子和等于i Set<Integer> set = new LinkedHashSet<Integer>(); set.add(i); set.add(t); sets.add(set);//把i,t-->set-->sets } } } for (Iterator iterator = sets.iterator(); iterator.hasNext();) { Set<Integer> set = (Set<Integer>) iterator.next(); for (Iterator iterator2 = set.iterator(); iterator2.hasNext();) { Integer integer = (Integer) iterator2.next(); System.out.print(integer); if (iterator2.hasNext() == false) { System.out.println(); } else { System.out.print(" "); } } } } }
相关文章推荐
- 备考蓝桥杯(16)包子问题 java实现
- 备考蓝桥杯(18)方格填数 java实现
- 备考蓝桥杯(5)扑克排列 java实现
- 备考蓝桥杯(26)漏掉的账单明细,(遍历所有情况)(java实现)(exforward)
- 备考蓝桥杯(19)方格填数(DFS) java实现
- 备考蓝桥杯(30)奇怪的比赛java实现(exeforward)
- 蓝桥杯备考(15)NQueen(经典回溯) java实现
- 备考蓝桥杯(8)取球博弈 java实现
- 备考蓝桥杯(12)输入日期 java实现
- 备考蓝桥杯(28)黑洞数字java实现
- 备考蓝桥杯(1)算式☆☆☆ + ☆☆☆ = ☆☆☆ java 实现(全排列)
- 蓝桥杯备考(11)微生物增殖 java实现
- 备考蓝桥杯(37)超级无敌经典的全排列算法 java实现
- 备考蓝桥杯(13)顺时针螺旋填入矩阵 java实现
- 备考蓝桥杯(27)迷宫走法(java实现)
- 备考蓝桥杯(9)密码转换器 java实现
- 备考蓝桥杯(34)泊松汾酒java实现exeforward
- 备考蓝桥杯(10)矩阵旋转 java实现
- 备考蓝桥杯(23)G将军准备敢死队 java实现
- 备考蓝桥杯(14)playfair加密java实现