幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。
首先从1开始写出自然数1,2,3,4,5,6,....
1 就是第一个幸运数。
我们从2这个数开始。把所有序号能被2整除的项删除,变为:
1 _ 3 _ 5 _ 7 _ 9 ....
把它们缩紧,重新记序,为:
1 3 5 7 9 .... 。这时,3为第2个幸运数,
然后把所有能被3整除的序号位置的数删去。注意,是序号位置,不是那个数本身能否被3整除!! 删除的应该是5,11, 17, ...
此时7为第3个幸运数,然后再删去序号位置能被7整除的(19,39,...)
/** * @version 1.0 * @auther 孙沐华\ * 幸运数 */ public class LuckNum { public static void main(String[] args) throws Exception{ Scanner scanner = new Scanner(System.in); int count = 0; int count2 = 0; int m = scanner.nextInt(); int n = scanner.nextInt(); ArrayList<String> list1 = new ArrayList<>(); list1.add("0"); for (int i = 1; i < 1000; i++) { if (i % 2 != 0) { list1.add("" + i); } } for (int i = 2; i < 499; i++) { if (i % 3 == 0) { list1.remove(i - count); count++; } } for (int i = 2; i < 70; i++) { if (i % 7 == 0) { list1.remove(i - count2); count2++; } } for (String s : list1) { System.out.print(s+" "); } int check = Check(m, n, list1); System.out.println(check); } public static int Check(int m, int n, ArrayList<String> list) { int count = 0; int start = list.indexOf(""+m); do { start = list.indexOf("" + m); m--; }while (start==-1); int end = list.indexOf(""+n); do { n++; end = list.indexOf("" + n); }while (end==-1); for (int i = 0; i <50; i++) { String s = list.get(i); if (Integer.parseInt( list.get(i)) > Integer.parseInt( list.get(start)) && (Integer.parseInt( list.get(i)) < Integer.parseInt( list.get(end)))) { count++; } if ((Integer.parseInt( list.get(i)) > Integer.parseInt( list.get(end)))){ break; } } return count; } }
标签:count,get,int,list1,list,++,幸运
From: https://www.cnblogs.com/xingxingbclg/p/17033941.html