思路分析
- 初始化,首先筛掉所有偶数
- 用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();
}
}