hdu1286(篩選法找約數 尤拉函式)

2021-07-26 02:33:03 字數 651 閱讀 5090

題目大意:找出小於等於n且與n互質的數

方法一:

尤拉函式:講解

時間複雜度:o(sqrt(n))

模板:

int eular(int n)

}if(n>1)ret=ret-ret/n;

return ret;

}

方法二:

篩選法求出n所有的約數i

對j=i;j<=n;j+=i的所有j都和n有相同的約數i

減去這些數的個數

#include #include #include const int maxn=32768+5;

bool a[maxn];

int main()

{ //freopen("in.txt","r",stdin);

int t,n;

scanf("%d",&t);

while(t--){

memset(a,0,sizeof(a));

scanf("%d",&n);

int m=n/2;//注意這裡和素數篩選法的區別,最小的質因子是2,最大的質因子是n/2

for(int i=2;i<=m;i++){

if(n%i==0&&!a[i]){

for(int j=i;j

HDU 1286 尤拉函式

對於正整數n,尤拉函式是小於或等於n中與n互質的數的數量。x 來表示,如 8 4,那麼尤拉函式的計算公式為 x n 1 1 p1 1 1 p2 1 1 p3 1 1 pn 其中n為待求的正整數n,pi為p的質因數,注意質因數只算一次。如18 2 3 3 x 18 1 1 2 1 1 3 6 1 質數...

hdu 1286 (尤拉函式)

euler函式 那麼 12 12 1 1 2 1 1 3 4 若n是質數p的k次冪,n p k p k 1 p 1 p k 1 因為除了p的倍數外,其他數都跟n互質。尤拉函式是積性函式 若m,n互質,mn m n 特殊性質 當n為奇數時,2n n 證明於上述類似。ac include iostrea...

hdu 1286 找新朋友(尤拉函式)

一道赤裸裸的尤拉函式題!原來只知道尤拉這個人 真是頭髮短見識更短,慚愧,以後課下還是要了解一些其他方面的知識 嘿嘿 用了尤拉函式!這就是一道水題嗎 呵呵呵 附上尤拉函式的講解 在數論 對正整數 n,尤拉 函式是少於或等於n的數中與n 互質的數的數目。此函式以其首名研究者尤拉命名,它又稱為euler ...