#include <math.h>
#include <iostream>
int FermatFactor(int oddNumber)
{
int a = sqrt(oddNumber)+1;
int b2 = a*a - oddNumber;
std::cout << "B2: " << b2 << "a: " << a << std::endl;
int tmp = sqrt(b2);
while (tmp*tmp != b2)
{
a = a + 1;
b2 = a*a - oddNumber;
std::cout << "B2: " << b2 << "a: " << a << std::endl;
tmp = sqrt(b2);
}
return a + tmp;
}
int main() {
std::cout << "5959 => " << FermatFactor(5959) << std::endl;
return 0;
}
I2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IEZlcm1hdEZhY3RvcihpbnQgb2RkTnVtYmVyKQp7CiAgICBpbnQgYSA9IHNxcnQob2RkTnVtYmVyKSsxOwogICAgaW50IGIyID0gYSphIC0gb2RkTnVtYmVyOwogICAgc3RkOjpjb3V0IDw8ICJCMjogIiA8PCBiMiA8PCAiYTogIiA8PCBhIDw8IHN0ZDo6ZW5kbDsKCiAgICBpbnQgdG1wID0gc3FydChiMik7CiAgICB3aGlsZSAodG1wKnRtcCAhPSBiMikKICAgIHsKICAgICAgICBhID0gYSArIDE7CiAgICAgICAgYjIgPSBhKmEgLSBvZGROdW1iZXI7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJCMjogIiA8PCBiMiA8PCAiYTogIiA8PCBhIDw8IHN0ZDo6ZW5kbDsKICAgICAgICB0bXAgPSBzcXJ0KGIyKTsKICAgIH0KCiAgICByZXR1cm4gYSArIHRtcDsKfQoKaW50IG1haW4oKSB7CglzdGQ6OmNvdXQgPDwgIjU5NTkgPT4gIiA8PCBGZXJtYXRGYWN0b3IoNTk1OSkgPDwgc3RkOjplbmRsOwoJcmV0dXJuIDA7Cn0=