Counting
Coddyの「数学パズル」コースのレッスン 17/20。
ピタゴラスの三つ組 {a, b, c} は直角三角形を形成します。
p を、辺の長さが整数である直角三角形 {a, b, c} の周囲の長さとします。
p=12 のときは {3,4,5}、p=24 のときは {6,8,10}、そして p=30 のときは {5,12,13} というように、三つ組はちょうど1つ存在します。
p = 120 のときは、{20,48,52}, {24,45,51}, {30,40,50} というように、三つ組はちょうど3つ存在します。
対照的に、p=20 のときは三つ組は存在しません。
p≤120 の範囲では、三つ組が3つある p が1つ (p=120)、三つ組が2つある p が3つ (p=60,84,90)、そして三つ組がちょうど1つだけある p が13個存在します。
チャレンジ
難しいただ1つの三つ組を持つ p≤1000 はいくつありますか?
整数 N を受け取り、整数ピタゴラスの三つ組を1つだけ持つ p≤N の個数を返す関数 count1PythagoreanTripletSolution を作成してください。
自分で試してみよう
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "solution.h"
int main() {
int n;
if (scanf("%d", &n) != 1) n = 0;
int r = count1PythagoreanTripletSolution(n);
printf("%d\n", r);
return 0;
}