#include using namespace std; int gcd(const int a, const int b){ if(b == 0){ return a; } return gcd(b, a % b); } int main(){ cout << "Hello this is Patrick" << endl; auto start = chrono::high_resolution_clock::now(); // Generating pythagorean triplets can be done with Euclid's formula int maxLength = 1500000; vector occurrences(maxLength + 1, 0); for(int i = 1; i < 1500; ++i){ for(int j = 1; j < i; ++j){ if(gcd(i, j) != 1 || ((i % 2) != 0 && (j % 2) != 0)){ continue; } for(int k = 1; k < maxLength / i; ++k){ long a = k * (i*i - j*j); long b = 2 * k * i * j; long c = k * (i*i + j*j); long l = a + b + c; if(l < occurrences.size()){ occurrences[l]++; // cout << a << " " << b << " " << c << " " << l << endl; } } } } int result = 0; for(auto o : occurrences){ if(o == 1){ result++; } } cout << result << endl; auto duration = chrono::duration_cast(chrono::high_resolution_clock::now() - start); cout << (float)duration.count()/1000 << endl; return 0; }