Description
神炎皇烏利亞很喜歡數對,他想找到神奇的數對。
對於一個整數對(a,b),若滿足a+b<=n且a+b是ab的因子,則成爲神奇的數對。請問這樣的數對共有多少呢?
Solution
從題意上來看(a+b)是(a*b)的因子,設
∵
又∵
∴不妨枚舉
Code
var
n,ans,sum,i,maxn:int64;
s,f:array[0..10000000] of longint;
p:array[0..10000000] of boolean;
pd:boolean;
procedure phi;
var i,j,maxn:longint;
begin
maxn:=trunc(sqrt(n));
for i:=2 to maxn do
begin
if p[i]=false then
begin
inc(s[0]);s[s[0]]:=i;p[i]:=true;f[i]:=i-1;
end;
for j:=1 to s[0] do
begin
if i*s[j]>maxn then break;
p[i*s[j]]:=true;
if i mod s[j]=0 then
begin
f[i*s[j]]:=f[i]*s[j];
break;
end
else f[i*s[j]]:=f[i]*(s[j]-1);
end;
end;
end;
begin
readln(n);
phi;
maxn:=trunc(sqrt(n));
i:=1;
while i<maxn do
begin
inc(i);
sum:=n div (i*i);
ans:=ans+f[i]*sum;
end;
writeln(ans);
end.