幸运数
首先读题,了解大致规律。读题时可以将现有例子套进去了解
这里可以用逆推的方式来理清思路,要想知道幸运数个数首先要知道最后生成的序列是什么,那么我们首先要思考的就是如何生成这个序列。
这里需要注意一下在生成序列时,并不是每个数都向前移一个位置,用数组即可解决。创建数组时要注意大小,这道题只会用到m,n中间的数,所以数组长度为m,n中间较大的那个数就行了,而题干中已经说明m<n。
要注意mn的大小关系
详细代码如下
import java.util.Scanner;
public class xys {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int m=sc.nextInt();
int n=sc.nextInt();
int[] a=new int[n/2];
for(int i=0;i<n/2;i++) {
a[i]=2*i+1;
}
int l=1;
while(true) {
int p=l+1;
for(int i=l+1;i<n;i++) {
if((i+1)%a[l]==0) {
}else {
a[p]=a[i];
p++;
}
if(a[i]>n)break;
}
l++;
if(a[l]>=n)break;
}
int ans=0;
for(int i=0;i<n;i++) {
if(a[i]>=n)break;
if(a[i]>m)ans++;
}
System.out.println(ans);
}
}