pollard p-1算法
·
#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));
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)