程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> poj 3090 && poj 2478(法雷級數,歐拉函數)

poj 3090 && poj 2478(法雷級數,歐拉函數)

編輯:C++入門知識

poj 3090 && poj 2478(法雷級數,歐拉函數)


 

 

法雷級數的遞推公式很簡單:f[1] = 2; f[i] = f[i-1]+phi[i]。

該題是法雷級數的變形吧,答案是2*f[i]-1。

 

#include 
#include 
#include
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define LL long long
#define _LL __int64
#define eps 1e-12
#define PI acos(-1.0)
using namespace std;

const int maxn = 1100;

int flag[maxn];
int prime[maxn];
int phi[maxn];
LL f[maxn];

void init()
{
	memset(flag,0,sizeof(flag));
	prime[0] = 0;
	phi[1] = 1;
	for(int i = 2; i < maxn; i++)
	{
		if(flag[i] == 0)
		{
			phi[i] = i-1;
			prime[++prime[0]] = i;
		}
		for(int j = 1; j <= prime[0]&&prime[j]*i

 

http://poj.org/problem?id=2478

更簡單了,直接求法雷級數。基於素數篩的歐拉函數。

 

#include 
#include 
#include
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define LL long long
#define _LL __int64
#define eps 1e-12
#define PI acos(-1.0)
using namespace std;

const int maxn = 1000010;

int flag[maxn];
int prime[maxn];
int phi[maxn];
LL f[maxn];

void init()
{
	memset(flag,0,sizeof(flag));
	prime[0] = 0;
	phi[1] = 1;
	for(int i = 2; i < maxn; i++)
	{
		if(flag[i] == 0)
		{
			phi[i] = i-1;
			prime[++prime[0]] = i;
		}
		for(int j = 1; j <= prime[0]&&prime[j]*i

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved