#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int power(int x,int y,int m)//cal x^y%m
{
if(y==0)return 1%m;
int ret=x%m;
for(int i=0;i<y-1;i++)
ret=(ret*x)%m;
return ret;
}
int normal_power(int a,int b)
{
int ret=1;
for(int i=0;i<b;i++)
ret*=a;
return ret;
}
int inverse(int a,int m)
{
for(int i=1;i<m;i++)
if((a*i)%m==1)return i;
return true;
}
int getn(int p)
{
for(int i=2;i<p;i++)
{
if(power(i,(p-1)/2,p)==p-1)
return i;
}
return -1;
}
bool is_prime(int n)
{
if(n==2)return false;
double x=sqrt(n);
for(int i=2;i<=x;i++)
if(n%i==0)
{
cout<<i<<endl;
return false;
}
return true;
}
int main()
{
cout<<"This program can calculate the square root mode P of A if"<<endl;
cout<<"there is a s
模p平方根算法实现
最新推荐文章于 2022-01-24 00:53:48 发布
该程序用于计算模p平方根。首先,它检查输入的p是否为奇素数,然后计算a的Legendre符号。如果不存在解决方案,则输出提示。程序使用了包括幂运算、逆元、随机数n的选择等步骤来找到平方根。最后,通过一系列计算得到最终的模p平方根解。
摘要由CSDN通过智能技术生成