为了写更优美的筛法,也为纪念chp和xjh。
var
prime,notprime,phi:array [1..100000] of longint;
n,i,j,cnt:longint;
begin
readln(n);
for i:=2 to n do
begin
if notprime[i]=0 then
begin
cnt:=cnt+1;
prime[cnt]:=i;
phi[i]:=i-1;
end;
for j:=1 to cnt do
begin
if prime[j]*i>n then break;
notprime[i*prime[j]]:=1;
if i mod prime[j]=0 then
begin
phi[i*prime[j]]:=phi[i]*prime[j];
break;
end;
phi[i*prime[j]]:=phi[i]*(prime[j]-1);
end;
end;
for i:=1 to cnt do
writeln(prime[i]);
for i:=1 to n do
writeln(phi[i]);
end.