本文主要是介绍JZOJ 1845——约数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
先将1~n所有非素数除1外的最小公因数求出来
最后循环求出加上每一个i的除1外的最小公约数,如果为0,则加本身
代码如下:
varn,i,j:longint;ans:int64;w:array[2..10000000] of longint;beginreadln(n);for i:=2 to trunc(sqrt(n)) doif w[i]=0 then for j:=1 to n div i do if w[i*j]=0 then w[i*j]:=i;for i:=2 to n do if w[i]>0 then ans:=ans+w[i] else ans:=ans+i;writeln(ans);
end.
这篇关于JZOJ 1845——约数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!