「6 桁以下の正の整数 n を入力し、n 以下の素数がいくつあるかを出力するプログラムを作成してください。
複数のデータセットが与えられます。各データセットに n が1行に与えられます。入力の最後まで処理して下さい。」
上記の問題を解こうと思ってソースを書いてみたのですが、正しい結果が得られないようです。
どこに問題があるのでしょうか、ご教示願います。

import java.io.*;
import java.util.*;

class Main{
public static void main(String[] args){
int data,cnt;
Scanner sc = new Scanner(System.in);

while(sc.hasNext()){
data = sc.nextInt();
cnt = 0;
for(int i=2; i<=data; i++){
for(int x=2; x<=i; x++){
if(x==i){
cnt+=1;
break;
}else if(i%x==0){
break;
}
}
System.out.println(cnt);
}
}
}