首页 > 代码库 > POJ 3090 Visible Lattice Points ( 法雷数列 + 欧拉函数 )
POJ 3090 Visible Lattice Points ( 法雷数列 + 欧拉函数 )
#include <cstdio>#include <cstring> using namespace std;#define CLR( a, b ) memset( a, b, sizeof(a) )#define MAXN 1010int phi[ MAXN ], farey[ MAXN ], n, t;void get_euler() //打欧拉函数表 { CLR( phi, 0 ); phi[1] = 1; for( int i = 2; i < MAXN; ++i ) { if( !phi[i] ) { for( int j = i; j < MAXN; j+=i ) { if( !phi[j] ) phi[j] = j; phi[j] = phi[j] / i * ( i - 1 ); } } } }void cal(){ farey[1] = 1 + phi[1]; //根据farey数列和欧拉函数的关系 初始化法雷级数F[1]为2 for( int i = 2; i <= MAXN; ++i ) farey[i] = phi[i] + farey[i-1];}int main(){ get_euler(); cal(); scanf( "%d", &t ); for( int i = 1; i <= t; ++i ) { scanf( "%d", &n ); printf( "%d %d %d\n", i, n, farey[n] * 2 - 1 ); } return 0;}
POJ 3090 Visible Lattice Points ( 法雷数列 + 欧拉函数 )
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。