数学训练----数论F - Farey Sequence
来源:互联网 发布:浪潮软件官网 编辑:程序博客网 时间:2024/06/05 09:07
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 <= 10 6). 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
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 <= 10 6). 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
本题思路很明显,就是从2开始循环,计算小于等于它们的质数个数之和(求取小于等于一个数的质数个数可以用欧拉函数)。
即:
long long ans=0;for(i=2;i<=n;i++)ans+=oula[i];但是由于数太大,需要用打表法,不然会超时,因为这个错了好多次。
代码:
#include <iostream>#include <stdio.h>#include <string.h>using namespace std;int oula[1000005];int main(){ int n; int i,j; memset(oula,0,sizeof(oula)); for(i=2;i<=1000000;i++) { if(!oula[i]) { for(j=i;j<=1000000;j+=i) { if(!oula[j]) oula[j]=j; oula[j]=oula[j]/i*(i-1); } } } while(cin>>n,n) { long long ans=0; for(i=2;i<=n;i++) ans+=oula[i]; cout<<ans<<endl; } return 0;}
0 0
- 数学训练----数论F - Farey Sequence
- [转][数论]Farey Sequence深入学习
- 【筛法】【数论】[POJ 2478]Farey Sequence
- POJ2478 Farey Sequence 数论,欧拉函数
- [数学-欧拉函数]Pku2478--Farey Sequence
- 数学训练----数论Sum
- Farey Sequence(数论,欧拉函数(水))
- Farey Sequence
- Farey Sequence
- Farey Sequence
- 数学训练----数论-寒假安排
- 数学训练----数论HDU 2588 - GCD
- (Relax 数论1.8)POJ 2478 Farey Sequence(欧拉函数:前n项欧拉数之和)
- poj 2478 Farey Sequence(数论:欧拉函数+打表)
- poj 2478 Farey Sequence
- poj 2478 Farey Sequence
- pku2478 Farey Sequence
- POJ 2478 Farey Sequence
- 19. Remove Nth Node From End of List
- linux使用手册
- WindowManager.LayoutParams详解
- 《数据结构导论之树、二叉树、森林间的转换》
- 记录一道JS笔试题
- 数学训练----数论F - Farey Sequence
- 使用Python从各个子文件夹中复制指定文件的程序
- 51node1476 括号序列的最小代价(贪心)
- 神经网络weight参数怎么初始化
- 对border-radius的详细理解
- 【HDU 1848 Fibonacci again and again】 + sg函数
- 控制反转(IoC)-解析与实现
- 链表模板(带表头头插)
- C++中运算符 &和&&、|和|| 的区别