朝日新聞2005年7月8日パズル横丁解答

兄弟同時に歳をとるとしてプログラムしたプログラムの実行結果は以下の通り。

年齢差12歳,回数6回
弟  1 歳,兄 13 歳,差12歳,13倍
弟  2 歳,兄 14 歳,差12歳, 7倍
弟  3 歳,兄 15 歳,差12歳, 5倍
弟  4 歳,兄 16 歳,差12歳, 4倍
弟  6 歳,兄 18 歳,差12歳, 3倍
弟 12 歳,兄 24 歳,差12歳, 2倍

プログラムのソースは以下の通り。

#include "puzutl.h"

int main( int argc, cstring argv[])
{
  for( int b=1; b< 16; b++) {   // 年齢差
    int cnt = 0;                // 整数倍になった回数
    for( int a=1; a < 20; a++) { // 20まで
      if( ((a+b) % a) == 0) cnt++;
    }
    if( cnt >= 6) {
      ps( "年齢差%d歳,回数%d回\n", b, cnt);
      for( a=1; a< 20; a++) {
        if( ((a+b) % a) == 0) {
          int c = a+b;
          ps( "弟 %2d 歳,兄 %2d 歳,差%d歳,%2d倍\n", a, c, b, c/a);
        }
      }
    }
  }
  return    0;
}