解题思路:通过题目得知我们要先确定一个大范围,并且获取到大范围中的所有幸运数,定义两个数组,第一个数组存放最开始的所有数据,第二个数组存放删除以后的数据,实时更新数组的范围,并在第二个数组存放完以后,将第二个数组中的所有数据转移到第一个数组,最后定义范围查找在范围内的所有幸运数
注意事项:要实时更新数组的范围,最后要将初始的最大范围重新定义
参考代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int m=in.nextInt();
int q=1,d=2,r=0,j=2,t=0;
t=m;
int [] a=new int[1000010];
for(int i=1;i<=m;i++) {
a[i]=i;}
while(q==1) {
int p=0,v=1;
int [] b=new int[1000010];
for(int i=1;i<=m;i++) {
if(i%j==0) {
a[i]=0;
p++;}}
for(int i=1;i<=m;i++) {
if(a[i]!=0) {
b[v]=a[i];
v++;}}
m=m-p;
for(int i=1;i<=m;i++) {
a[i]=b[i];}
j=a[d];
if(j>=m) {
q=0;
break;}
d++;}
for(int i=1;i<=m;i++) {
if(a[i]<t && a[i]>n) {
r++;}}
System.out.println(r);
}}
0.0分
1 人评分