Как реализовать дискретное извлечение корня на C++?
Добрый день. Моя программа должна извлекать дискретный корень из числа по простому модулю, при условии, что ( k^2 - n ) делится на m без остатка. ( k^2 = n(mod m) ). С++ до этого не изучал, но и вообще тема мне не близка. Буду благодарен, если направите в правильное русло.
P.S. Мой недо-код ниже...
#include
#include
#include
using namespace std;
int main() {
int k, l;
int n, m, h;
cout << "Input a posistive integer>"; cin >> n;
cout << "Input a modulo>"; cin >> m;
k = sqrt(n%m);
l = k*k;
h = (l-n);
if(((h%m)==0)&&(k>0)) {
cout << int(k);
}
else {
cout << "Not found";
}
return 0;
}
Большое спасибо за уделенное время, но, боюсь, я эту статью уже видел, и она вряд ли подходит под мою задачу в полной мере. Это всего лишь первая лабораторная, и я не думаю, сравнивая с заданиями других, что меня просили бы написать столько кода.
Я пытался работать с pow, но для него требуются элементы с типом double. Из-за этого в блоке с if не работает "%". Но, по-идее, k тоже должно быть натуральным.