接著上一次的題解繼續寫:
首先,介紹一下思路:
易知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...