RT:
首先,你要知道什么是欧拉函数、欧拉函数的内涵、数学上怎么求欧拉函数、欧拉函数的作用及欧拉线筛的做法。
欧拉线筛不会的点这儿!
欧拉函数基础知识:https://www.cnblogs.com/handsomecui/p/4755455.html (说白了 φ(n) 就是求1~n中与n互质的数的个数)
1 var 2 f,zhi,v:array[0..1000001] of longint; //f[i]表示φ(i); 3 i,j,t,n:longint; 4 begin 5 readln(n); 6 f[1]:=1; 7 for i:=2 to n do //欧拉线筛求欧拉函数 8 begin 9 if v[i]=0 then 10 begin 11 inc(t); 12 zhi[t]:=i; 13 f[i]:=i-1; 14 end; 15 j:=1; 16 while (j<=t) and (zhi[j]*i<=n) do 17 begin 18 v[zhi[j]*i]:=1; 19 if i mod zhi[j]=0 then 20 begin 21 f[i*zhi[j]]:=f[i]*zhi[j]; 22 break; 23 end else f[i*zhi[j]]:=f[i]*(zhi[j]-1); 24 inc(j); 25 end; 26 end; 27 for i:=1 to n do 28 writeln(f[i]); 29 end.
推荐题目:洛谷P2158