2 x mod n 1(尤拉函式)

2021-09-02 15:35:46 字數 675 閱讀 3083

接著上一次的題解繼續寫:

首先,介紹一下思路:

易知n==1或2時,一定不存在這樣的x:當n為偶數時,bn + 1(b為整數)是奇數,而2^x是偶數,故 2^x mod n = 1不可能成立

尤拉定理:若n,a為正整數,且n,a互質,則:

於是,就可以從1~phi(n)遍歷,找到最小的x

附上**:

#include#include#includeusing namespace std;

long long n;

int p[100000];

long long qpow(long long a,long long k)//快速冪

t%=n;

t*=(t%n);

k>>=1;

} return ans;

}long long phi(long long k)

}} if(k>1)

res*=(k-1);

return res;

}int main()

long long x=phi(n);

for(long long i=1;i<=x;i++)

if(qpow(2,i)%n==1)

}return 0;

}

結果這種方法耗時竟然比之前的暴搜長,無語

尤拉函式 尤拉定理

尤拉函式 對正整數 n,尤拉函式 是小於等於 n的數中與 n互質的數的數目 此函式以其首名研究者尤拉命名 euler so totientfunction 它又稱為 euler stotient function 函式 尤拉商數等。例如 8 4,因為 1,3,5,7均和8 互質。注 n為1時尤拉函式...

尤拉函式 尤拉定理

尤拉函式 設 n 為正整數,則 1,2,n 中與 n 互素的整數的個數計作 n 叫做尤拉函式。設 p 是素數,p p 1設 p 是素數,pa pa p a 1 設 p,q 是不同的素數,n q p,n p q 即 n p 1 q 1 設 m,n 是兩個正整數,且 m,n 1,若 n m n,n m ...

尤拉函式尤拉篩

尤拉函式求小於等於n與n互質的數的個數 複習時發現這個知識點竟然沒有整理 n為素數即為n 1 除了其本身 n為素數的倍數 ola sushu j i ola i sushu j else ola sushu j i ola i sushu j 1 include include include in...