求大神 给个优化,该如何解决

求大神 给个优化
题目是:
给定整数区间[A,B]问其中有多少个完全平方数。
输入格式:
多组数据,包含两个正整数A,B 1<=A<=B<=2000000000。
输出格式:
每组数据输出一行包含一个整数,表示闭区间[A,B]中包含的完全平方数的个数。

我的代码是:
import java.util.Scanner;
public class testSq{
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        int b = scan.nextInt();
        if(a>b){
            a=a+b;
            b=a-b;
            a=a-b;
        }
        if(b > 2000000000){
            System.out.println("超过2000000000");
        }else{
            int count =0;
            for(int i=a;i<=b;i++){
                if(Math.sqrt(i)%1==0){
                    count++;
                }
            }
            System.out.println(count);
        }
     }
 }
问题是:这种写法耗内存?速度慢?求大神给点指导。
------解决思路----------------------
对 A,B 取平方根,取整,减法。
------解决思路----------------------
对a和b进行 平方根,然后取整相减就是你需要的个数,(注意a本身平方根的时候需要+1)如果要数值在平方就好了啊求大神 给个优化,该如何解决
穷举你累不累啊