思路分析 初始化,首先筛掉所有偶数用l标记当前为第几个幸运数用p来标记已经剔除的数的个数,并正确将后面的数字移动。最后遍历计数m,n之间的数字 代码展示(java) import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); while(input.hasNext()) { int m = input.nextInt(); int n = input.nextInt(); int[] num = new int[n]; for(int i=0; i<n; i++) { num[i] = 2*i+1; } int l=1; while(num[l]<n) { int p=l+1; for(int i=l+1; i<num.length; i++) { if((i+1)%num[l]!=0) { num[p++] = num[i]; } } l++; } int res = 0; for (int i=0; i<num.length; i++) { if(num[i]>=n) break; if(num[i]>m) res++; } System.out.println(res); } input.close(); } }