f(x)%(p^a) (p是素数) 求解
《信息安全数学基础》 陈恭亮
第三章练习题第20题,懒,然后写了个程序,f(x)=x^4+7x+4
2015.10.26
哈哈哈
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; long long int pro(long long int x,long long int y){ long long int ans=1; for(int i=1;i<=y;i++){ ans=ans*x; } return ans; } long long int f(long long int x){ return pro(x,4)+7*x+4; } long long int fd(long long int x){ return 4*pro(x,3)+7; } void exgcd(long long int *a,long long int *b,long long int x,long long int y){ if(y==0){ *a=1; *b=1; } else{ long long int a1,b1; exgcd(&a1,&b1,y,x%y); *a=b1; *b=a1-x/y*b1; } return; } long long int inv(long long int x,long long int y){ long long int a,b; exgcd(&a,&b,x,y); return (a%y+y)%y; } int main(){ long long int m=3; long long int nowm=9; long long int x=1; for(int i=1;i<5;i++){ long long int temp1=(-f(x)/(nowm/m)%m+m)%m; long long int temp3=fd(x); long long int temp2=inv(temp3,m); x=temp1*temp2%m*nowm/m+x; nowm*=m; //printf("%lld %lld %lld %lld\n",x,temp1,temp2,temp3); } printf("%lld\n",x); }