Poj 2478 Farey Sequence
Farey Sequence
Description The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 < a < b <= n and gcd(a,b) = 1 arranged in increasing order. The first few are
F2 = {1/2} F3 = {1/3, 1/2, 2/3} F4 = {1/4, 1/3, 1/2, 2/3, 3/4} F5 = {1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5} You task is to calculate the number of terms in the Farey sequence Fn. Input There are several test cases. Each test case has only one line, which contains a positive integer n (2 <= n <= 106). There are no blank lines between cases. A line with a single 0 terminates the input.
Output For each test case, you should output one line, which contains N(n) ---- the number of terms in the Farey sequence Fn.
Sample Input 2 3 4 5 0 Sample Output 1 3 5 9 Source POJ Contest,Author:Mathematica@ZSU
|
题解:其实就是求出2-N的欧拉函数之和,弄个前缀和即可= =(PS:最近才学的欧拉函数,拿来用用^_^)
1 var 2 i,j,l,m,n:longint; 3 a,b:array[0..1000005] of int64; 4 begin 5 for i:=2 to 1000000 do 6 begin 7 if a[i]=0 then 8 begin 9 inc(b[0]); 10 b[b[0]]:=i; 11 a[i]:=i-1; 12 end; 13 for j:=1 to b[0] do 14 begin 15 if (b[j])>(1000000 div i) then break; 16 if (i mod b[j])=0 then a[i*b[j]]:=a[i]*b[j] else a[i*b[j]]:=a[i]*(b[j]-1); 17 end; 18 end; 19 a[1]:=0; 20 for i:=2 to 1000000 do a[i]:=a[i-1]+a[i]; 21 while not(eof) do 22 begin 23 readln(n); 24 if n=0 then halt; 25 writeln(a[n]); 26 end; 27 end.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)