874 篩法求尤拉函式

2021-10-09 04:18:38 字數 756 閱讀 5994

給定乙個正整數n,求1~n中每個數的尤拉函式之和。

輸入格式

共一行,包含乙個整數n。

輸出格式

共一行,包含乙個整數,表示1~n中每個數的尤拉函式之和。

資料範圍

1≤n≤106

輸入樣例:

6輸出樣例:

12想法:

涉及到在範圍內的質數,則使用線性篩法

#include

using namespace std;

const int n=

1e6+10;

typedef long long ll;

bool st[n]

;int prim[n]

,phi[n]

;int cnt=0;

ll get

(int x)

for(int j=

0;prim[j]

<=x/i;j++

)else

phi[i*prim[j]

]=phi[i]

*(prim[j]-1

);}}

ll res=0;

for(int i=

1;i<=x;i++

)return res;

}int main()

874 篩法求尤拉函式

給定乙個正整數 n 求 1 n 中每個數的尤拉函式之和。共一行,包含乙個整數 n 共一行,包含乙個整數,表示 1 n 中每個數的尤拉函式之和。資料範圍 1 n 10 6 輸入樣例 6輸出樣例 12eratosthenes篩法求尤拉函式 problem 篩法求尤拉函式 contest acwing u...

AcWing 874 篩法求尤拉函式

題目描述 給定乙個正整數n,求1 n中每個數的尤拉函式之和。輸入格式 共一行,包含乙個整數n。輸出格式 共一行,包含乙個整數,表示1 n中每個數的尤拉函式之和。資料範圍 1 n 10 6 輸入樣例 6輸出樣例 12分析 求1到n中每個數的尤拉函式之和,顯然乙個個呼叫計算尤拉函式的公式時間複雜度是極高...

AcWing 874 篩法求尤拉函式

這道題並不簡單,你要會用尤拉篩去篩尤拉數。說說思路。首先和尤拉篩質數一樣,先把質數篩出來,質數的尤拉數為本身減1,因為質數與前面的數都互質。然後用質數去更新下乙個數,篩除合數的同時,去更新合數的尤拉數,其中有幾個特殊的地方。include using namespace std const int ...