給定乙個正整數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 ...