欧拉函数

声明

 

  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

 

posted @ 2018-10-05 21:51  》落雨~·~情缘《  阅读(204)  评论(0编辑  收藏  举报