Согласно ссылке простые множители нечетного числа могут рассчитываться следующим образом:
а = квадрат (N + b ^ 2)
Ниже я написал программу для этого, но я не получаю простые множители 2345678917. Я знаю, что это простое число, но для других простых чисел программа возвращает 1 и само число, но для этого числа этого не происходит. Почему?
#include <stdio.h>
#include <math.h>
void foo(unsigned long long x)
{
int i;
for (i=1;i<x;i++)
if (fmod(sqrt(x + i*i), 1) == 0) {
printf("%f %f\n", (sqrt(x + i*i) - i), (sqrt(x + i*i)+i));
return;
}
}
int main(void) {
foo((unsigned long long)2345678917);
return 0;
}