假设N(m)为模m的周期,则有
N(ab)=lcm(N(a),N(b)),其中gcd(a,b)=1; /*这里证明使用了fibo数的性质,
N(p^k)=N(p)*p^(k-1),其中p为质数 /*论文里这个没有证明,但是验证了10^14内的都满足
对于质数p,其周期可以推算得出:
当p%5=1或4时,它是p-1的因子
当p%4=2或3时,它是2*(p-1)的因子
如果便只用验证因子是否是循环节就行。
求fibo数,可以使用矩阵乘法,
#include<stdio.h>
#include<string.h>
#include<math.h>
#define maxp 1000000
#define LL long long
LL P;
int pri[maxp+10];
int b[maxp+10];
int tot;
struct data {
int p,t;
LL r;
} q[500];
int qt;
LL fab[15];
void getprime()
{
memset(b,0,sizeof(b));
tot = 0;
int i=2;
while (i<=maxp) {
while (b[i] && i<=maxp)
i++;
pri[++tot]=i;
int j=i;
while (j<=maxp) {
b[j]=1;
j+=i;
}
}
tot--;
return ;
}
LL pow_mod(LL x,LL y,LL z)
{
LL res = 1;
x = x%z;
wh