#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
using namespace std;
long long qmi(int a,int t,long long val) {
long long ans = 1;;
while (t) {
if (t & 1) {
ans = ans *a;
ans %= val;
}
t >>= 1;
a *= a;
a %= val;
}
return ans;
}
long long gcd(long long a, long long b) {
if (b) {
return gcd(b, a % b);
}
else {
return a;
}
}
long long pollardp_1(long long val,int pmax) {
long long B = 1;
for (int i = 2; i <= pmax; i++) {
B *= i;
}
long long y = qmi(2, B, val) - 1;
long long ans = gcd(max(y,val),min(y,val));
if (ans > 1 && ans < val)return ans;
return -1;
}
int main() {
long long val = 767;
printf("%ld", pollardp_1(val,4));
}
pollard p-1算法
最新推荐文章于 2022-05-01 17:02:48 发布