我一直在尝试解决一个名为Chebyshev's Theorem(https://www.acmicpc.net/problem/4948)的算法问题。
我遇到了一个有趣的情况,我还没有弄清楚其中的区别。希望我可以在这里找到答案。
这是我的代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
while(true){
System.out.println("start!!");
int input = Integer.parseInt(br.readLine());
if(input == 0){
break;
}
int ddable = 2*input;
int answer = 0;
ArrayList<Integer> base = new ArrayList<>();
if(input == 1){
answer = 1;
}else {
System.out.println("It is not 1");
for(int i = 2 ; i <= ddable ; i++ ){
base.add(i);
}
for ( int i = 2 ; i <= ddable ; i++ ){
for ( int j = 2 ; i*j <=ddable ; j++){
if(base.contains(new Integer(i*j))){
base.remove(new Integer(i*j));
System.out.println(i*j+"removed");
}
}
}
int count = 0;
for ( int i = input ; i <= ddable ; i++){
if(base.contains(new Integer(i))){
count++;
}
}
answer = count;
}
System.out.println("syso: "+answer);
bw.write("bw: "+answer);
}
bw.flush();
br.close();
bw.close();
}
}
这是我的结果:
![enter image description here](https://istack.dev59.com/xS7Dy.webp)
为什么会这样呢?