線性方法求尤拉數 POJ2478

2021-08-04 04:15:31 字數 843 閱讀 6250

1.當需要求1到n的尤拉數之和時用線性方法(本題)

2.當需要求單個尤拉數但資料很大用標準方法求

例如:線性的方法求尤拉數**(模板):

#include

#include

#define ll long long

const

int maxn=1000010;

int dp[maxn];

ll a[maxn];

int main()

}a[1]=1;

a[2]=1;

for(int i=3;i<=maxn;i++)

a[i]=a[i-1]+dp[i];

int n;

while(~scanf("%d",&n),n)

return

0;}

普通方法求尤拉數:

#include 

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

int a[4000],c[5000],d[40010];

int cnt;

void init()//篩選出質數

}}void fen(int n)//分解質因數

}if(n>1)

a[cnt++]=n;

}int main()

poj 2478 線性篩素數 尤拉函式

由於2 n 10 6,所以一般的求尤拉函式方法用不上,而我們可以根據他的乙個性質 設a為n的質因數,若 n a 0 n a a 0 則有e n e n a a 若 n a 0 n a a 0 則有 e n e n a a 1 進行求解,而現在首要的任務就是求質因數a,我們可以利用線性篩素數時產生的n...

尤拉函式 POJ 2478 尤拉篩法

通式 phi x x 1 frac 1 frac 1 frac cdots 1 frac 若n是質數p的k次冪 phi n p k p p 1 p 因為除了p的倍數外,其他數都跟n互質。設n為正整數,以 phi n 表示不超過n且與n互素的正整數的個數,稱為n的尤拉函式值,這裡函式 n n,n n ...

poj 2478(快速求解尤拉函式優化版。。。)

之前一直在用 void get eular memset eul,0,sizeof eul eul 1 1 for int i 2 i 然後按照優化方案來寫程式。進入了100ms以內了。嗨皮。include include includeusing namespace std const int m...