-1

100 から 1000 の間のピタゴラスの 3 連符を見つけるプログラムを作成しました。これは同じコードです。

#include<iostream>
#include<cmath>

using namespace std;

bool checkWhetherInteger(int x, int y);
int getInteger(int x, int y);

int main() 
{
    cout << "This program is to print all pythagorean triplets from 100 to 1000. \n";

    int x=100;
    int y=100;

    for(; x<=1000; x++)
    {
        for (; y<=1000; y++)
        {
            if (checkWhetherInteger(x,y))
            {
                cout << "Triplet : " << x << "  " << y << "  " << getInteger(x,y) << "\n";
            }
        }
        y=100;
    }
    return 0;
}

bool checkWhetherInteger(int x, int y)
{
    for (int i=141; i<=1415; i++)
    {
        if(hypot(x,y) == i )
        {
            return true;
        }
    }
}

int getInteger(int x, int y)
{
    return static_cast<int>(hypot(x,y));

}

私が今直面している問題は2つあります。

  1. 主な問題は、実行が遅いことです。すべてのトリプレットが得られましたが、実行に約 553.7 秒かかりました。私が達成したいことを1〜2秒以内に実行できるアルゴリズムはありますか。

  2. 2 つの独立変数 x と y があるため、1 つのトリプレットを 2 回取得しています。それについて何ができるか。

間違いを犯した場合は、ご容赦ください。私は学習者です。

4

1 に答える 1