パズル万華鏡

面白いパズルの紹介と解説をします。

ピタゴラス数についての考察(3)

 ピタゴラス数についての考察を紹介します。

 c2≦nを満たすピタゴラス数(a2 + b2 = c2 a,b,c(1≦a≦b≦c)は正整数)の求め方を考察する。

 cの値を決めて、下図の赤い線の方向に、左から右へピタゴラス数を探索する。
探索が終了すれば、cの値をひとつ増やし、同様の探索をc2の値がnの値に達するまで繰り返す。

f:id:isemba:20150801095006j:plain

ピタゴラス数生成プログラム

/* << pg111.c >> */
#include <stdio.h>
#include <math.h>
int main () {
  int a,b,c,
      count, /* ピタゴラス数の個数。*/
      n,     /* nの値。*/
      w;
  /* nの値を読み込む。*/
  scanf("%d",&n);
  /* 初期設定。*/
  c = 1; count = 0;
  /* ピタゴラス数の探索。*/
  while( c*c <= n ) {
    for( a=1; 2*a*a<=c*c; a++ ) {
      for( b=c/sqrt(2.0); b<=c; b++ ) {
        w = a*a + b*b - c*c;
        if( w > 0 ) { break; }
        if( w == 0 ) { 
          count++; 
          printf("%d: %d %d %d\n",count,a,b,c);
        }
      }
    }
    c++;
  }
  printf("n=%d count=%d\n",n,count);
}

f:id:isemba:20150801095138j:plain
f:id:isemba:20150801095157j:plain