////////////////////////////////////////////////////////////////////////////////
//  << j182b.java >>
//
//  基礎(8):ピタゴラス数(効率のよい解法)
//
//  a*a + b*b = c*c (1<=a<=b<=c, c*c<=n)を満たすピタゴラス数の個数を求める。
//
//               n      n以下のピタゴラス数
//             10**3             11
//             10**4             52
//             10**5            220
//             10**6            881
//             10**7           3371
//             10**8          12471
//             10**9          45251
//             10**10        161436
//
////////////////////////////////////////////////////////////////////////////////

class j182b {
  public static void main(String args[]) {

    long n = 100000000; 
    long count = 0; // ピタゴラス数の個数。
    long a,b,c,w;

    c = 1;
    while( c*c <= n ) { 
      a = 1;
      b = c;
      while( a <= b ) {
        w = a*a + b*b - c*c;
        if( w == 0 ) { count++; }
        if( w > 0 ) { b--; } else { a++; } 
      }
      c++; 
    }

    System.out.println(n + "以下のピタゴラス数は" + count + "個あります");
  }
}
実行結果
% javac j182b.java

% java j182b
100000000以下のピタゴラス数は12471個あります